본문 바로가기

반응형

C++/Study

(25)
[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; 의 방식으로 초기화 시킨다.
[C++] 오버로딩이 불가능한 연산자의 종류 연산자설명.멤버 접근 연산자.*멤버 포인터 연산자::범위 지정 연산자?:조건 연산자 (3항 연산자)sizeof바이트 단위 크기 계산typeidRTTI 관련 연산자static_cast형변환 연산자dynamic_cast형변환 연산자const_cast형변환 연산자reinterpret_cast형변환 연산자
[C++] 멤버함수 기반으로만 오버로딩이 가능한 연산자 연산자설명=대입 연산자()함수 호출 연산자[]배열 접근 연산자(인덱스 연산자)->멤버 접근을 위한 포인터 연산자
[C++] 연산자를 오버로딩 하는데 있어서의 주의사항 1. 본래의 의도를 벗어난 형태의 연산자 오버로딩은 좋지 않다.​2. 연산자의 우선순위와 결합성은 바뀌지 않는다.​3. 매개변수의 디폴트 값 설정이 불가능하다.​4. 연산자의 순수 기능까지 빼앗을 수는 없다.
[C++] 후위형 증감연산자 오버로딩 시 주의사항 const Point operator++ (int){ // ...} 1. 매개변수 위치에 int를 넣어준다. 이는 후위형 증감연산자 오버로딩이라는 약속이며 int라고 해서 특별히 정수형과 관련 있는것은 아니다.​int가 없으면 전위형 증감연산자 오버로딩이 된다.​​​2. 반환형을 const 객체로 한다.​이는 Point pos; 라고 객체를 생성했을 때 (pos++)++; 와 같은 연산을 막기 위해서이다.​++(++pos);는 허용이 되지만 (pos++)++; 는 허용되지 않는 문법이다.
[C++] 대입 연산자 오버로딩 시 유의점 대입 연산자 오버로딩 시 해당 클래스에 동적 할당되는 메모리가 있다면 기존에 할당되어 있던 메모리를 해제해주고 나서 그 다음에 메모리를 할당해 주어야 한다.

반응형