在下面的代码中调用哪个构造函数
Which constructor is called in the following code?
看看下面的代码:
class Test
{
public:
Test()
{
cout << "defaultn";
}
Test(const Test&)
{
cout << "copyn";
}
Test& operator = (const Test&)
{
cout << "assignn";
return *this;
}
};
int main()
{
Test t = Test();
}
应该在main函数中调用哪个构造函数?
我运行,它打印"default",没有其他内容。但是,如果我将复制构造函数和赋值操作符设为私有,则无法编译。但是它并没有使用这个构造函数。
应该使用哪个构造函数?有标准保证吗?这是我不知道的规矩吗?
实时代码示例:
http://ideone.com/lnUEA1 http://ideone.com/nXjAo4编译器可以自由地优化掉不必要的副本。这并不意味着不需要可访问的复制构造函数。
您的代码显示复制初始化,这意味着必须有复制构造函数可用。理论上,将调用默认构造函数和复制构造函数。
不需要也不使用赋值操作符
相关文章:
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 确保所有构造函数调用相同的函数 c++ 设计模式
- 减少复制构造函数调用
- 使用回调函数从构造函数调用虚拟/派生方法的替代方法?
- 在 Google 测试中,我可以从构造函数调用 GetParam() 吗?
- C++ - 从另一个类构造函数调用类构造函数
- 在C++中初始化带有和不使用构造函数调用的对象有什么区别
- 是否可以从移动构造函数调用默认构造函数?
- 在模板生成器模式中分解重复的构造函数调用
- std::atexit 从全局对象的构造函数调用时的排序
- 对构造函数调用的约束
- 编译器错过了无效的构造函数调用,并调用不存在的(或私有的)默认构造函数
- 用构造函数调用填充向量
- 创建指针时是否没有构造函数调用
- 使用 emplace_back 避免移动构造函数调用的最佳方法?
- C++ 抽象类构造函数调用
- 为什么函数参数将带有参数的构造函数调用
- 为什么比“构造函数”调用更多的“解构器”调用
- 将对象传递给函数并不是导致构造函数调用