본문 바로가기

반응형

2024/12/14

(7)
[C++] const 참조자의 상수 참조 참조자를 const로 선언하면 상수 참조가 가능하다.​const int &ref = 30; 이런 식으로​위처럼 하면 const 참조자가 상수를 참조할 때 임시변수를 만들어서 이 임시변수에 상수를 저장하고 이를 참조자가 참조하도록 한다.​따라서,int Adder(const int &num1, const int &num2){ return num1 + num2;}cout
[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++] 이니셜라이저(Initializer) 이니셜라이저를 이용하면 선언과 동시에 초기화가 이뤄지는 형태로 바이너리 코드가 생성된다. 이러한 특성 때문에 const 변수와 참조자도 초기화가 가능하다.
[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++] 복사 생성자가 호출되는 시점 case1 : 기존에 생성된 객체를 이용해서 새로운 객체를 초기화하는 경우 case2 : Call-by-value 방식의 함수호출 과정에서 객체를 인자로 전달하는 경우 case3 : 객체를 반환하되, 참조형으로 반환하지 않는 경우 즉, 객체를 새로 생성하되 생성과 동시에 동일한 자료형의 객체로 초기화하는 경우에 복사 생성자가 호출된다.
[C++] 메모리 공간의 할당과 초기화가 동시에 일어나는 상황 첫번째,int num1 = num2; 두번째,int SimpleFunc(int n){ // ...}int main(void){ int num = 10; SimpleFunc(num); // 함수가 호출되는 순간 매개변수 n이 할당과 동시에 초기화 // ...} 세번째,int SimpleFunc(int n){ // ... return n; // 반환하는 순간 메모리 공간이 할당되면서 동시에 초기화}int main(void){ int num = 10; cout
[C++] static 멤버변수의 초기화 방법 class Simple{public : static int simObjCnt;}; int Simple::simObjCnt = 0;​여기에서 맨 앞 int는 static 멤버변수의 자료형​즉, (멤버변수의 자료형) (클래스명)::(멤버변수 명) = 0; 의 방식으로 초기화 시킨다.

반응형