【发布时间】:2012-01-17 01:59:49
【问题描述】:
如果一个类同时具有标准构造函数和复制构造函数
class Ex{
//constructor definitions
}
以及将其作为参数(按值)的函数
void F(Ex _exin){...}
获取以下代码:
Ex A;
F(A); //F's parameter is copy constructed from A
F(Ex()); //F's parameter uses the default constructor
在第三行中,我使用默认构造函数将 Ex 类的新(临时)对象传递给 F。我的问题是:在创建这个新对象之后,它是否也复制构造/分配(就像它发生在第二行一样)还是直接在“内部”创建 F?
【问题讨论】:
-
我编辑了我的答案,您可能会发现它很有用。
-
Don't Be Afraid to Use The Science。使用调试器断点或构造函数内的打印进行测试是微不足道的。
-
@KarlBielefeldt 并非所有编译器都符合标准。在一个平台上的一个编译器中发生的事情并没有成为规则。规则由标准制定。编译器可以选择打印或不打印。阅读我的答案以获取更多信息。
-
我同意,@Luchian。因此,我的建议是,确定它在 your 环境中的行为方式的唯一方法是运行测试。
-
@KarlBielefeldt,是的,但是假设它在所有环境中都是这样是错误的。这就是人们关心标准的原因。
标签: c++ constructor