如果'Test'是一个普通的类,那么之间有什么区别:
Test* test = new Test;
Run Code Online (Sandbox Code Playgroud)
和
Test* test = new Test();
Run Code Online (Sandbox Code Playgroud) 我对value-&default-&zero-initialization非常困惑.特别是当他们参与不同的标准C++ 03和C++ 11(和C++ 14)时.
我引用并试图在这里扩展一个非常好的答案Value-/Default-/Zero-初始化C++ 98和C++ 03,以使其更加通用,因为它可以帮助很多用户,如果有人可以帮助填写需要差距,以便对何时发生的情况有一个很好的概述?
通过示例的全面见解简而言之:
有时新运算符返回的内存将被初始化,有时它不会取决于您正在新建的类型是POD(普通旧数据),还是它是一个包含POD成员且正在使用的类编译器生成的默认构造函数.
假设:
struct A { int m; };
struct B { ~B(); int m; };
struct C { C() : m(){}; ~C(); int m; };
struct D { D(){}; int m; };
struct E { …
Run Code Online (Sandbox Code Playgroud) 如果我这样初始化std::vector
:
vector<int> sletmig(300);
Run Code Online (Sandbox Code Playgroud)
它将所有 300 个值设置为零,还是保留我计算机内存中的内容?
如果我创建一个像vector<myClass> v(10);
每个元素的默认值的向量?
还有,如果它是vector<myUnion> v(10)
什么?
c++ ×4
vector ×2
c ×1
c++-faq ×1
c++03 ×1
c++11 ×1
c++14 ×1
c++98 ×1
constructor ×1
declaration ×1
memory ×1
new-operator ×1
std ×1