반응형
생성자 사용
- ClassName c(인수리스트);
- ClassName c(); ClassName c; //둘 다 인자 없는 생성자
동적 할당된 객체 배열 선언
- 동적 할당이므로 배열 첫번째 원소를 가리키는 포인터를 생성하면 됨. 배열 포인터라고 다르지 않음.
- 포인터변수 선언 후 배열 동적 할당함
- ClassName* p; //배열을 가리킬 포인터변수 선언
- p = new ClassName[n]; //객체배열 동적할당new과 크기[]지정!!!!!!!! 인자 없는 생성자 n번 호출됨
malloc&free 냐 new&delete냐
- C에서만 malloc과 free
- C++과 java에서는 new와 delete를 사용
멤버변수에 다른 객체의 포인터 변수를 갖는 클래스
- 멤버변수로 포인터 변수를 갖는 클래스에는 항상 소멸자를 구현해줄 것. 필수!!(내용은 아래 참고)
- ★멤버변수로 포인터 변수를 갖는 클래스가 세트로 갖고다닐 것 : 생성자(포인터 변수에 공간을 동적할당), 소멸자(포인터 변수가 가리키는 공간을 할당해제), 복사생성자(깊은 복사), 대입연산자(깊은 복사)
- 위의 경우에 깊은 복사를 할 때에 새로 대입되는 값의 크기가 현재 동적할당되어있는 공간과 달라지므로 기존의 동적할당되어있는 공간은 할당해제 후 새로 들어갈 값에 맞는 공간을 할당해주는 일이 필요함!!!!
소멸자
- 소멸자는 명시적으로 호출되는 것이 아니라 객체 소멸시점에 자동으로 호출됨.
- 객체 a가 멤버변수로 자신과 다른 클래스의 객체 b를 갖고 있을 때, a가 소멸되는 시점에서 a의 소멸자가 호출되고 그 후 b의 소멸자가 뒤따라 호출되어 b가 소멸된다.
반응형
'C&C++ > C++' 카테고리의 다른 글
[C++]<ERROR> cin : do-while문 cin 입력 무한 루프 반복 오류 (1) | 2021.12.17 |
---|