如果'Test'是一个普通的类,那么之间有什么区别:
Test* test = new Test;
Run Code Online (Sandbox Code Playgroud)
和
Test* test = new Test();
Run Code Online (Sandbox Code Playgroud) 以下短语在C++中的含义是什么:
零初始化,
默认初始化,和
值初始化
C++开发人员应该了解他们什么?
我正在学习C++,而且对于不同类型的初始化我感到很困惑.
你可以做:
T a;
Run Code Online (Sandbox Code Playgroud)
据我所知,有时会初始化a,有时也不会,具体取决于是否T有默认构造函数.
你也可以这样做:
T a(); // or
T a(1, 2, 3... args);
Run Code Online (Sandbox Code Playgroud)
; (在某些情况下):
T a = 1; // implicitly converted to T sometimes?
Run Code Online (Sandbox Code Playgroud)
; 如果没有构造函数:
T a = {1, 2, 3, 4, 5, 6};
Run Code Online (Sandbox Code Playgroud)
; 并且:
T a = T(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
.
如果你想在堆上分配,那就是
T a = new T(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
还有别的事吗?
我想知道a)我是否已经涵盖了所有类型的初始化,以及b)何时使用每种类型?