对象的赋值可以采用重载运算符的方法实现:
对象名1 = 对象名2;
对象的复制可以采用复制构造函数的方法实现:
(1)类名 对象2(对象1)
(2)类名 对象2 = 对象1
这两种方法调用的都是复制构造函数而不是构造函数,故需要提前声明复制构造函数;若没有声明复制构造函数,则这两种方法在编译时均能通过,但也没有调用构造函数,程序运行结束时却会调用析构函数。
class myClass
{
public:
myClass();//构造函数
myClass(const myClass &A);//复制构造函数
~myClass();//析构函数
private:
static int a;//调用构造函数的次数
static int b;//调用复制构造函数的次数
static int c;//调用析构函数的次数
};
//构造函数
myClass::myClass()
{
a++;
cout << "this is in Constructor: "<< a << endl;
}
//复制构造函数
myClass::myClass(const myClass &A)
{
c++;
cout << "this is in Copy-Constructor: " << c << endl;
}
//析构函数
myClass::~myClass()
{
b++;
cout<<"this is in Deconstructor: "<< b << endl;
}
//类的静态成员变量的初始化
int myClass::a = 0;
int myClass::b = 0;
int myClass::c = 0;
int main(void)
{
myClass A;//调用构造函数
myClass B = A;//调用复制构造函数
myClass C(A);//调用复制构造函数
myClass D;//调用复制构造函数
D = A;//运算符重载
return 0;
}