/*★ Copy Constructor 前田 稔 ★*/ #include <iostream> #include <string.h> using namespace std; class NameCls { public: char *name; int *age; NameCls() { cout << "Constructor の呼出し\n"; name= new char[80]; strcpy(name,"未設定"); age= new int; *age= 0; } //Destructor ~NameCls() { cout << "Destructor の呼出し\n"; delete [] name; delete age; } }; |
//Class の実体をパラメータで受け取る void Func(NameCls obj) { cout << obj.name << *obj.age << "\n"; } int main() { NameCls cls; strcpy(cls.name,"田中一郎"); *cls.age= 19; Func(cls); cout << "Func から戻る\n"; cout << cls.name << *cls.age << "\n"; return 0; } |
Constructor の呼出し 田中一郎19 Destructor の呼出し Func から戻る ・188 Destructor の呼出し |
NameCls(const NameCls &obj) { cout << "Copy Constructor の呼出し\n"; name= new char[80]; strcpy(name,obj.name); age= new int; *age= *obj.age; } |