拷贝构造函数与默认拷贝构造函数
#include <iostream> #include <string.h> using namespace std; class Student { public: Student(char *pName = "no name", int ssId = 0) { id = ssId; strcpy(name,pName); cout<<"constructing new student "<<name<<endl; } Student(Student &s) { cout<<"constructing copy of "<<s.name<<endl; strcpy(name,"copy of "); strcat(name,s.name); id = s.id; } ~Student() { cout<<"Destructing "<<name<<endl; } protected: char name[40]; int id; }; void fn(Student s) { cout<<"In function fn()\n"; } class Tutor { public: Tutor(Student &s):student(s) { cout<<"Construction tutor"<<endl; } protected: Student student; }; /* 调用默认拷贝构造函数,完成一个成员一个成员的拷贝. 如果成员是类对象,则调用其拷贝构造函数或者默认拷贝构造函数 */ void fn2(Tutor tutor) { cout<<"In function fn2()"<<endl; } void main() { //Student randy("randy",1234); //cout<<"Calling fn()"<<endl; //fn(randy); //cout<<"Returned from fn()"<<endl; Student randy("randy",1234); Tutor tutor(randy); cout<<"Calling fn2()"<<endl; fn2(tutor); cout<<"Returned from fn2()"<<endl; }