C++ 使用默认构造函数初始化对象的不同方法
似乎有所有的选择。1、2和3是相同的,只是风格的问题还是有一些不同?4应该先创建一个临时对象,然后将其分配给C++ 使用默认构造函数初始化对象的不同方法,c++,c++11,c++17,C++,C++11,C++17,似乎有所有的选择。1、2和3是相同的,只是风格的问题还是有一些不同?4应该先创建一个临时对象,然后将其分配给a,但只有当我完全关闭comliler的优化功能时才会发生,对吗 是不同的,因为它没有默认初始化。但是,这在A的情况下并不重要,因为没有要初始化的成员 是不同的,因为它没有默认初始化。但是,这在A的情况下并不重要,因为没有要初始化的成员 我不明白,你的问题与面向对象编程有什么关系?关于可用选项的补充阅读:。关于兔子洞到底有多深的一些有趣的观点:请注意,从C++17开始。事实上,它甚至不需要
a
,但只有当我完全关闭comliler的优化功能时才会发生,对吗
A
的情况下并不重要,因为没有要初始化的成员A
的情况下并不重要,因为没有要初始化的成员我不明白,你的问题与面向对象编程有什么关系?关于可用选项的补充阅读:。关于兔子洞到底有多深的一些有趣的观点:请注意,从C++17开始。事实上,它甚至不需要移动构造函数(但是)。在C++中比它更复杂,而且有很多角的情况。您的所有选项可能有不同的行为(但对于您的
A
,它们是相似的)。我不明白,您的问题与面向对象编程有什么关系?有关可用选项的补充阅读:。关于兔子洞到底有多深的一些有趣的观点:请注意,从C++17开始。事实上,它甚至不需要移动构造函数(但是)。在C++中比它更复杂,而且有很多角的情况。您的所有选项可能具有不同的行为(但对于A
,它们是相似的)。
class A {};
A a;// 1
A a{};// 2
A a = {};// 3
A a = A();// 4