C++拷贝构造函数总结

2018-01-14  本文已影响31人  JxYoung

C++的两种初始化方式

在阐述拷贝构造函数之前,先让我们来看一下C++支持的初始化方式。C++支持两种初始化方式。

int a(5);
A a(2);
int a = 5;
A a = a1;

除了类类型之外,两种初始化方式无差别。对于类类型,直接初始化调用相应的构造函数,拷贝初始化调用拷贝构造函数。

拷贝构造函数的一般形式

classname(const classname &obj){
    //...
}

拷贝构造函数和构造函数、析构函数一样,都是一种特殊的函数。如上所示,拷贝构造函数的函数名和类名一样,形参为同类型对象的const引用。可以看到,拷贝构造函数的实现是需要开发者自己实现的,具体在拷贝构造函数中实现什么,由开发者自己决定。但是正如其名字所含的意义,应当在拷贝构造函数中实现对象的拷贝操作。

什么时候必须实现拷贝构造函数?

何时调用拷贝构造函数?

func(Object obj){//obj参数作为对象的值传递传入
     // ...
}
func(){
    Object obj;
    // ...
    return obj;//对象obj以值传递的形式返回
}
Object obj1;
Object obj2 = obj1;// obj2通过obj1初始化

当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用拷贝构造函数。当该类型的对象传递给函数或从函数返回该类型的对象时,将隐式调用拷贝构造函数。

上一篇下一篇

猜你喜欢

热点阅读