1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#include "stdafx.h" #include <string.h> #include <conio.h> #define DEBUG class CStr{ char* str; public: CStr(char *s=""){ str = new char[strlen(s)+1]; strcpy(str,s); printf("construction\n"); } CStr(const CStr &s){ str = new char[strlen(s.Get())+1]; strcpy(str,s.Get());//const 객체는 const 멤버 함수만을 호출할 수 있다. printf("construction\n"); } ~CStr() { delete[] str; printf("destructor\n"); } char* Get() const{ return str; } void Print() {printf("%s\n", str);} }; void f(CStr s){ s.Print(); } void main() { CStr s("hello"); f(s); #ifdef DEBUG //cmd char c; scanf("%c",&c); #endif } |
복사 생성자가 호출되는 경우
1. 함수의 파라미터로 객체를 전달
2. 함수가 객체를 리턴
3. 객체의 선언에 사용된 대입 연산자
4. 임시 객체의 복사