用auto实例化对象是一种好习惯吗?

时间:2018-11-15 15:08:25

标签: c++

解决方案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

1 个答案:

答案 0 :(得分:2)

在我看来,这种情况下您应该始终使用解决方案2,因为您必须在某处定义类型。我更喜欢仅在已经设置了类型的情况下使用auto,并且可以避免重复类型,例如从容器中获取元素

std::vector<double> myVector{0.0, 1.0};
auto firstElement = myVector.front();

auto myInt = static_cast<int>(2.0);