2012. 5. 10. 19:16
Study/C++
* 소멸자
1. 소멸자의 특징
1) 소멸자는 반환값, 매개변수 모두 없다.
2) 주로 뒤처리를 담당한다. ex>힙메모리를 사용하는 동적할당을 해제
2. 객체의 삭제(소멸) 순서
1) 소멸자 호출
2) 객체에 할당된 메모리 해제
* this
1. this의 특징
1) this는 객체 자기자신을 가리키는 포인터이다.
2) 객체는 모두 this포인터를 가진다.
3) "&객체명" 과 동일하다.
4) 객체 내 함수에서도 사용하여 객체에 포함된 멤버임을 표기하는 용도로도 쓸 수 있다.
* C 와 C++의 초기화 스타일
1. C
int num=20;
int &ref=num;
2. C++
int num(20);
int &ref(num);
-> 객체를 이런 식으로 초기화 할경우?
cClass cl2 = cl1; => cClass cl2(cl1); cl2를 생성하며 객체를 인자로 받는 생성자를 호출 하겠다... 라는 의미로 변경됨
* 복사 생성자
1. 자신과 타입이 같은 다른 객체와의 복사가 이루어질때 이루어지는 생성자
2. 형태의 예 : cClass(const cClass& cl) : mem1(cl.mem1), mem2(cl.mem2), .....
3. 매개변수의 &가 의미하는 것
1) 매개변수로 들어온 객체의 접근권한을 얻어 불필요한 복사 행위 방지
2) 만일 레퍼런스로 받지 않으면 매개변수 상의 객체가 임시로 생성되면서 또 다시 생성자 호출이 일어나므로 무한 루프에 빠지게 된다.
4. 호출되는 시점
1) 기존에 생성된 객체를 이용해서 새로운 객체를 초기화 하는 경우
2) Call by value 로 매개변수로 전달되어 임시 객체가 생성되는 경우3) 객체를 반환하되, 참조형으로 반환하지 않아 임시 객체가 생성되는 경우
* 깊은 복사, 얕은 복사
1. 얕은 복사란?
1) 단순히 객체간 멤버 변수를 복사 하는 행위
2. 깊은 복사란?
1) 객체간 복사에 있어 동적할당(힙 영역)이 있을 경우 그 영역을 새로 설정하여 힙영억간에도 복사가 이루어져 독립된 동적할당 영역을 유지하는 것
1. 소멸자의 특징
1) 소멸자는 반환값, 매개변수 모두 없다.
2) 주로 뒤처리를 담당한다. ex>힙메모리를 사용하는 동적할당을 해제
2. 객체의 삭제(소멸) 순서
1) 소멸자 호출
2) 객체에 할당된 메모리 해제
* this
1. this의 특징
1) this는 객체 자기자신을 가리키는 포인터이다.
2) 객체는 모두 this포인터를 가진다.
3) "&객체명" 과 동일하다.
4) 객체 내 함수에서도 사용하여 객체에 포함된 멤버임을 표기하는 용도로도 쓸 수 있다.
* C 와 C++의 초기화 스타일
1. C
int num=20;
int &ref=num;
2. C++
int num(20);
int &ref(num);
-> 객체를 이런 식으로 초기화 할경우?
cClass cl2 = cl1; => cClass cl2(cl1); cl2를 생성하며 객체를 인자로 받는 생성자를 호출 하겠다... 라는 의미로 변경됨
* 복사 생성자
1. 자신과 타입이 같은 다른 객체와의 복사가 이루어질때 이루어지는 생성자
2. 형태의 예 : cClass(const cClass& cl) : mem1(cl.mem1), mem2(cl.mem2), .....
3. 매개변수의 &가 의미하는 것
1) 매개변수로 들어온 객체의 접근권한을 얻어 불필요한 복사 행위 방지
2) 만일 레퍼런스로 받지 않으면 매개변수 상의 객체가 임시로 생성되면서 또 다시 생성자 호출이 일어나므로 무한 루프에 빠지게 된다.
4. 호출되는 시점
1) 기존에 생성된 객체를 이용해서 새로운 객체를 초기화 하는 경우
2) Call by value 로 매개변수로 전달되어 임시 객체가 생성되는 경우3) 객체를 반환하되, 참조형으로 반환하지 않아 임시 객체가 생성되는 경우
* 깊은 복사, 얕은 복사
1. 얕은 복사란?
1) 단순히 객체간 멤버 변수를 복사 하는 행위
2. 깊은 복사란?
1) 객체간 복사에 있어 동적할당(힙 영역)이 있을 경우 그 영역을 새로 설정하여 힙영억간에도 복사가 이루어져 독립된 동적할당 영역을 유지하는 것
'Study > C++' 카테고리의 다른 글
[OOP1] 상속 업 캐스팅, 다운 캐스팅, 다이나믹 캐스팅 (0) | 2012.06.04 |
---|---|
[OOP1] 클래스 (0) | 2012.05.17 |
[OOP1] 120507 Class 계속.... (0) | 2012.05.07 |
[OOP1] 120503 Class, 객체, 생성자, 소멸자 (0) | 2012.05.03 |
[OOP1] 클래스 (0) | 2012.04.30 |