This question already has answers here:
Is there a difference between copy initialization and direct initialization?
(9个答案)
5年前关闭。
在我正在阅读的书中看到了这一点:
是否与以下内容相同:
在:
如果正确编写了复制构造函数,则生成的对象相同,但是从理论上讲,后者将再调用一个复制/移动构造函数。
根据§12.8/ 31,如果编译器决定取消副本,则情况并非如此:
如果采用
(9个答案)
5年前关闭。
在我正在阅读的书中看到了这一点:
Rectangle r(Point(200,200));
是否与以下内容相同:
Rectangle r = Rectangle(Point(200,200));
最佳答案
在:
Rectangle r(Point(200,200));
您正在通过采用Rectangle
对象的构造函数初始化Point
对象。在:
Rectangle r = Rectangle(Point(200,200));
您正在按上述方式构造一个Rectangle
临时对象,然后将其传递给Rectangle
的copy / move构造函数。如果正确编写了复制构造函数,则生成的对象相同,但是从理论上讲,后者将再调用一个复制/移动构造函数。
根据§12.8/ 31,如果编译器决定取消副本,则情况并非如此:
如果采用
Point
的构造方法未标记为explicit
,那么您也可以采用以下形式:Rectangle r = Point(200,200);
关于c++ - 这是简短的变量声明吗? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31056036/
10-13 03:04