使用“复制构造函数调用”;新"; 我对C++很陌生.
我读过,当将对象作为参数传递给函数时,或者从函数返回对象时,以及在初始化带有赋值的变量时,都会调用复制构造函数。 假设D有复制构造函数,在这种情况下也可以调用它吗使用“复制构造函数调用”;新"; 我对C++很陌生.,c++,copy-constructor,C++,Copy Constructor,我读过,当将对象作为参数传递给函数时,或者从函数返回对象时,以及在初始化带有赋值的变量时,都会调用复制构造函数。 假设D有复制构造函数,在这种情况下也可以调用它吗 D* pd1 = new D; D* pd2 = new D(*pd1); 是。 可以隐式或显式调用复制构造函数 在这种情况下,它被显式地称为: D* pd2 = new D(*pd1); //pd1 points to D object D pd2 = *pd1; //pd1 points to D object 在这种情况下
D* pd1 = new D;
D* pd2 = new D(*pd1);
是。
可以隐式或显式调用复制构造函数
在这种情况下,它被显式地称为:
D* pd2 = new D(*pd1); //pd1 points to D object
D pd2 = *pd1; //pd1 points to D object
在这种情况下,它被隐式地称为:
D* pd2 = new D(*pd1); //pd1 points to D object
D pd2 = *pd1; //pd1 points to D object
如果复制构造函数使用explicit
说明符,则不能隐式调用它
您可以这样尝试:
class copy {
public:
copy(int a = 1) :i(a) {}
copy(copy &c) :i(c.i) { std::cout << "I'm copied!"; }
private:
int i;
};
int main() {
copy c;
// here the copy constructor is called
// the string literal will be printed
auto p = new copy(c);
}
类副本{
公众:
复制(inta=1):i(a){
copy(copy&c):i(c.i){std::coutpd1
的类型是什么?这是否意味着D pd2=*pd1;中的pd2
也被分配了堆?