반응형

C++ 27

[C++] typedef

출처 - http://www.benjaminlog.com/entry/typedef​​​typedef BOOL int;typedef int BOOL;​BOOL flag로 선언하면 int flag와 동일한 문장이 되게 하려면 둘 중 어느것으로 선언해야하나...​답은 아래 typedef int BOOL; 이 맞다.​이어서 다른 typedef 정의들을 보자면typedef int BOOL, *PBOOL;typedef struct _student{ int stNo; int korScore;}student, *pstudent;typedef void (*pFunc)(int, int*); 위 3개의 typedef 정의를 보면 어디까지가 정의이고 어디가 그걸 대체하는 type인지 헷갈리기 시작한다.​typedef를 정의할..

C++/Study 2024.12.15

[C++] 새로운 자료형 bool

bool 자료형은 C언어에는 없는 자료형이었으나 최근 표준에서는 bool도 C언어의 기본 자료형으로 추가되었다.​C와 C++은 정수0은 '거짓'으로 그리고 0이 아닌 모든 정수는 '참'으로 정의한다.​하지만, bool 자료형을 사용하면 true와 false로 참과 거짓을 표현할 수 있다.​true와 false를 출력하면 각각 1과 0으로 출력되는데 이 때문에 define 된 것으로 오해할 수가 있는데​정수형은 4byte, bool형은 1byte로 다르다.​다만 각각 1과 0으로 출력되는 것은 예전부터 쭉 그렇게 사용해왔고 아직도 그렇게 사용하고 있기 때문에​이 둘을 출력하거나 정수형으로 변환하면 1과 0으로 변환되도록 정의되어 있을 뿐이다.

C++/Study 2024.12.15

[C++] 파일 분할 기준

파일명.h - 클래스의 선언을 담는다.​파일명.cpp - 클래스의 정의(멤버함수의 정의)를 담는다.​​​클래스의 선언이란...class Car{private : char gamerID[CAR_CONST::ID_LEN]; int fuelGauge; int curSpeed;publid : void InitMembers(char *ID, int fuel); void showCarState(); void Accel(); void Break();}; 위 처럼 컴파일러가 클래스와 관련된 문장의 오류를 잡아내는데 필요한 최소한의 정보를 포함한 클래스를 구성하는 외형적인 틀을 말한다.​그리고 이어서 클래스의 정의는...​위 클래스의 선언부에 선언되어 있는 함수들을 정의하는 것이 클래스의 정의이다.

C++/Study 2024.12.14

[C++] C++ 스타일의 초기화 (묵시적 형변환)

int num = 20;int &ref = num;위와 같은 방식의 선언 및 초기화는 C++에서int num(20);int &ref(num);과 같은 방식으로 선언 및 초기화가 가능하다.​마찬가지로AAA class2 = class1;AAA class2(class1);도 동일한 의미로 해석이 된다.​이는 사실AAA class2 = class1;이 아래와 같이 묵시적으로 변환이 되어서AAA class2(class1);객체가 생성되는 것이다.​따라서 복사 생성자에 의해서 초기화가 이루어지며 복사 생성자 앞에 explicit 키워드를 붙이면 묵시적 변환이 일어나지 않아서​AAA class2 = class1; 과 같은 방식으로는 초기화가 안되고​AAA class2(class1); 과 같은 방식으로만 초기화가 가능..

C++/Study 2024.12.14

[C++] 복사 생성자가 호출되는 시점

case1 : 기존에 생성된 객체를 이용해서 새로운 객체를 초기화하는 경우 case2 : Call-by-value 방식의 함수호출 과정에서 객체를 인자로 전달하는 경우 case3 : 객체를 반환하되, 참조형으로 반환하지 않는 경우 즉, 객체를 새로 생성하되 생성과 동시에 동일한 자료형의 객체로 초기화하는 경우에 복사 생성자가 호출된다.

C++/Study 2024.12.14
반응형