拷贝构造函数与默认拷贝构造函数

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



}

 

你可能感兴趣的:(构造函数)