본문 바로가기
반응형

전체 글1338

[Clean Code] Comment Tags [클린 코드] 코멘트 태그프로그래밍에서 자주 사용하는 Comment 형식  「Comment Tags」 혹은 「Annotation Comments」 불리는데코드 내에서 특정한 의미를 갖는 키워드를 포함한 주석TODO (할일)당장 구현하기는 어렵지만 추후에 작업이 필요한 사항#TODO: 1차 Release 후 데이터 검증 로직 추가 필요 FIXME (수정 필요)문제사항이 있는건 확실하지만, 당장 수정할 필요는 없는 사항// FIXME: 이 함수는 특정 입력에서 예외가 발생할 가능성이 있음HACK(임시 해결책)// HACK: 임시로 sleep()을 넣어서 동기화 문제 해결 (근본적인 해결 필요)XXX (위험 또는 경고)해당 부분에 대하여 더 생각해볼 필요성이 있는 사항// XXX: 보안 취약점이 있을 가능성이.. 2025. 2. 20.
[C++] 상수 멤버함수 const member function 상수 멤버 함수 (const member function)• 컴파일러에게 상수 멤버 함수인 것을 알게 해주는 것• 멤버 함수의 괄호() 뒤쪽에 const 키워드 사용 함수 선언과 구현으로 분리하는 경우 양쪽에 모두 붙인다.• 상수 멤버 함수 안에서는 모든 멤버는 상수로 취급• 상수 객체는 상수 멤버함수만 호출 가능  [예제] const 멤버 함수 필요성#include class Point{public: int xpos, ypos; Point(int x, int y) : xpos{ x }, ypos{ y } {} void set(int x, int y) { xpos = x; ypos = y; } void print() { std::cout   const 상수 객체(Point) 만들고 print() 호.. 2025. 2. 19.
[C++] return by reference return by reference 필요성return by value 방식으로 반환 시 객체 복사본을 생성한다. 정확히는 "리턴용 임시객체(temporary)" 생성되어 반환  [예시] return by valuestruct Point{ int x; int y;};Point pt = { 1, 2 };Point f() // return by value{ return pt;}int main(){ f1().x = 10; // error (리턴용임시객체.x = 10)}  임시 객체는 함수 호출하는 문장 끝에서 파괴되고 rvalue 활용할 수 없다. 그렇기에 등호(=) 왼쪽으로 올 수 없다.  [예시] return by referencestruct Point{ int x; int y;};Point pt = { .. 2025. 2. 15.
[C++] class this 키워드 this• 멤버함수 내에서만 사용• 멤버함수 호출하는 개체 주소• 멤버 함수는 호출시 this가 같이 전달 - this call 방식• static 멤버 함수에서는 this 사용 불가• friend함수, 전역함수에서 this 사용 불가  [this 예제]#include class Point{ int x, y;public: void set(int a, int b) // void set(Point* this, int a, int b) { x = a; // this->x = a; y = b; // this->y = b; }};int main(){ Point p1, p2; .. 2025. 2. 8.
[C++] static 변수 필요성 및 활용 static 변수 필요성 및 활용이번 포스팅에서는 클래스(객체) 관점에서static 키워드 필요성과 특징에 대해 알아보고자 한다.  아래 포스팅에 대한 추가 예시이기도 하다.📌 [C/C++] static 변수 [C/C++] static 변수static 변수- static 변수를 정적 변수라고 부릅니다.- 전역변수와 지역변수 모두에 static 선언을 추가할 수 있다.  하지만 static 변수는 『접근이 제한된 전역변수』를 만드는 것으로  지역변수 적zoosso.tistory.comstatic 변수 필요성#include int count = 0;class Car{ int speed;public: Car() { ++count; } ~Car() { --count; }};int main(){ Car c1; .. 2025. 2. 6.
[C++] default 생성자 요청 default 생성자 요청클래스에서 아래와 같이 개발자가 기본 생성자를 만들 수 있다.class Point{ int x, y;public: Point() {}; Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p;}  「= default」 형태로컴파일러에게 기본 생성자를 만들어 달라고 요청할 수 있다.이는 최적화를 보다 잘 지원 받기 위함class Point{ int x, y;public: Point() = default; Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p;}  📌 [C++] 생성자 함수  [C++] 생성자 함수생성자 함수 (constructor)• 클래스 이름과 동일한 .. 2025. 2. 5.
[C++] 복사 생성자 (Copy Constructor)란? 복사 생성자 (Copy Constructor)란?객체가 자신과 동일한 타입의 객체로 초기화 될 때 호출되는 생성자class A{ int no; char ch;public: A(const A & ra); // 복사생성자함수};  [예시] 복사 생성자p2는 Point(int) 필요하지만Point(Point) 형태로 복사 생성자로 build error 발생 Xclass Point{ int x; int y;public: Point() : x{ 0 }, y{ 0 } {} Point(int a, int b) : x{ a }, y{ b } {}};int main(){ Point p1(1, 2); // ok // Point p2(1); // error Point p3(p1); // ok }  .. 2025. 2. 4.
[C++] default member initializer 클래스 멤버 초기화크게 대입 방식, 초기화 방식 2가지가 존재한다. 대입 방식① string 타입의 디폴트 생성자 호출② 대입 연산자 호출 초기화 방식① 해당 인자에 맞는 생성자 호출하여 초기화#include int g = 0;class Harbang{ std::string name; int age;public: Harbang(const std::string& s, int a) { // 대입 방식 name = s; age = a; }};class Forest{ std::string name; int age;public: Forest(const std::string& s, int a) : name{s}, age{a} {} // 초기화}; Q) 어떤 방식이 좋을까?간단한 원형 타입이라면 초기화 방식이.. 2025. 2. 2.
[C++] 클래스 Class 클래스 Class객체(object)를 만드는 틀"클래스 내부 변수/함수" = "멤버 데이터/함수" 라고 한다.  접근 권한• public 외부에서도 접근 허용• private 멤버 함수만 접근 가능 (default 접근 권한)• protected 멤버 함수나 파생 클래스에서만 접근 가능  struct 기본적으로 public 접근 권한이면Class 변수와 함수가 기본적으로 private 접근권한! 📌 [C/C++] struct 차이 비교 [C/C++] struct 차이 비교C++에서는 Class가 있지만 stuct 형태도 사용 가능하다. C에서 사용하던 형태와 C++ 차이가 존재한다.  [C] StructC언어 구조체 안에는 변수만 둘 수 있다.그래서 구조체 함수를 외부에 두어야 한다. [Czoosso... 2025. 1. 31.
[C++] 클래스 파일 분할 클래스 파일 분할일반 함수와 같이 클래스도멤버 함수를 선언과 구현으로 분리하는 것이 일반적이다. 템플릿과 같이반드시 헤더 파일에 멤버 함수 구현부도 같이 있어야 하는 경우도 있다.📌 헤더파일(.h) 만들어서 include 하기 [C/C++] [전처리기] 헤더파일(.h) 만들어서 include 하기헤더파일(.h) 만들어서 include 하기 헤더파일(.h)에는 함수 원형이나 클래스만 선언한다.내부 구현은 별도의 파일에서 구현한다. [Calc.h]int add(int A, int B);  [Calc.cpp]#include "Calc.h"int add(int a, int b)zoosso.tistory.com 하나의 파일에서 구현 [main.cpp]#include #include class Blog{ std:.. 2025. 1. 30.
반응형