コピーコンストラクション関数とデフォルトのコピーコンストラクション関数
1339 ワード
#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;
}