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 49 50 51 52 53 54 55 56 57 58 |
#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);} CStr& operator=(CStr &s){ delete[] str; str=new char[strlen(s.Get())+1]; strcpy(str,s.Get()); printf("=operator\r\n"); return *this; } }; void f(CStr s){ s.Print(); } void main() { CStr s("hello"),t("world"); CStr u=s;//3. 객체의 선언에 사용된 대입 연산자 f(u);//1. 함수의 파라미터로 객체를 전달 s=t;//*객체간의 대입문은 복사 생성자를 호출하지 않는다. //operator= 호출 s.Print(); #ifdef DEBUG //cmd char c; scanf("%c",&c); #endif } |