Classname(const classname &o)
{
//body of constructor
}
拷贝构造函数只应用于初始化:
1. 当一个对象初始化另一个对象时
2. 当所创建的一个对象的拷贝传给一个函数时
3. 当生成临时对象时(如函数返回类对象)
测试代码:
#include<iostream>
using namespace std;
class myclass{
int str_num;
int *p;
public:
myclass(int size); //构造函数
~myclass(); //析构函数
myclass(const myclass &x); //拷贝构造函数
void put(int i,int j);
int get(int i);
};
myclass::myclass(int size)
{
cout<<"have made a myclass/n";
p=new int[size];
str_num=size;
}
myclass::~myclass()
{
cout<<"del myclass/n";
delete [] p;
}
myclass::myclass(const myclass &x) //拷贝构造函数
{
int i;
p=new int[x.str_num];
for(i=0;i<x.str_num;i++)
p[i]=x.p[i];
}
void myclass::put(int i,int j)
{
if(i>=0&&i<str_num)
p[i]=j;
}
int myclass::get(int i)
{
return p[i];
}
int main()
{
myclass a(10);
int i;
for(i=0;i<10;i++)
a.put(i,i);
for(i=0;i<10;i++)
cout<<a.get(i)<<"/t";
cout<<endl;
myclass b(a);
for(i=0;i<10;i++)
cout<<b.get(i)<<"/t"<<endl;
return 0;
}
测试结果:
have made a myclass
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
del myclass
del myclass
Press any key to continue