解决方案1:
auto a = A()
解决方案2:
A a;
我想知道两种解决方案中的哪一种是实例化对象的最佳方式?
我知道解决方案1 先调用默认构造函数,然后再调用复制构造函数,但是我真的不知道编写该构造函数是否有任何好处。
编辑:我编写了一个小类进行自己的测试,看来根据注释,这两个“解决方案”具有完全相同的行为。
class A
{
public:
A(){
std::cout <<"default_constructor\n";
}
A(const A &g){
std::cout <<"copy_constructor\n";
}
};
解决方案1:
default_constructor
解决方案2:
default_constructor
答案 0 :(得分:2)
在我看来,这种情况下您应该始终使用解决方案2,因为您必须在某处定义类型。我更喜欢仅在已经设置了类型的情况下使用auto,并且可以避免重复类型,例如从容器中获取元素
std::vector<double> myVector{0.0, 1.0};
auto firstElement = myVector.front();
或
auto myInt = static_cast<int>(2.0);