【发布时间】:2016-12-29 21:51:11
【问题描述】:
我有一个基本的 C++ 问题,我真的应该知道答案。
假设我们有一些类A 和构造函数A(int a)。有什么区别:
A test_obj(4);
和
A test_obj = A(4);
?
我通常使用后一种语法,但在我信赖的 C++ 入门书中查找了一些不相关的内容后,我意识到他们通常使用前者。这两者之间的区别经常在内置类型的上下文中讨论(例如int a(6) vs int a = 6),我的理解是在这种情况下它们是等价的。
但是,对于用户定义的类,这两种定义对象的方法是否等效?还是后一种选择先默认构造test_obj,然后使用A的复制构造函数将A(4)的返回值赋给test_obj?如果是第二种可能性,我想这两种方法对于大型类可能会有一些性能差异。
我确信这个问题在互联网上的某个地方得到了回答,即使是在这里,但如果没有找到询问第一个选项和使用 new 之间区别的问题,我无法有效地搜索它,这是不相关的。
【问题讨论】:
-
我一般使用后一种语法 -- 为什么?你很难找到有经验的 C++ 程序员故意使用这种语法。
-
@PaulMcKenzie 没有特别好的理由,我就是这么做的。我愿意改变。我以前从未真正考虑过。
-
@PaulMcKenzie 回到原来的问题,有什么区别?
-
我想这两种方法对于大型类可能会有一些性能差异 -- Not necessarily。查看程序集列表中的
main。