#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;
}