コピーコンストラクション関数とデフォルトのコピーコンストラクション関数


#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()
"; } 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; }