使用“new”调用复制构造函数

Day*_*mer 3 c++ copy-constructor

我对 C++ 很陌生。

我已经读过复制构造函数在将对象作为参数传递给函数或从函数返回对象时以及通过赋值初始化变量时被调用。在这种情况下也可以调用它吗,假设 D 有复制构造函数?

D* pd1 = new D;
D* pd2 = new D(*pd1);
Run Code Online (Sandbox Code Playgroud)

Gáb*_*yal 7

是的。

可以隐式或显式调用复制构造函数。

在这种情况下,它被明确调用:

D* pd2 = new D(*pd1); //pd1 points to D object
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它被隐式调用:

D pd2 = *pd1; //pd1 points to D object
Run Code Online (Sandbox Code Playgroud)

如果使用说明explicit符,则不能隐式调用复制构造函数。

http://en.cppreference.com/w/cpp/language/explicit