c++物件建立帶括號與無括號的區別
阿新 • • 發佈:2018-12-23
class Test
{
public:
Test() {}
Test(int a) {}
}
1、棧上建立物件
1.1 無括號
Test a; // 呼叫預設建構函式,棧上分配記憶體建立物件
1.2 有括號
Test a(); // 無任何意義,宣告一個返回值為Test物件的無參函式
1.3 有括號+引數 Test a(2); // 呼叫建構函式Test(int a),棧上分配記憶體建立物件 2、堆上建立物件 2.1 無括號 Test *a = new Test; // 呼叫預設建構函式(若由編譯器生成則成員不初始化),堆上分配記憶體建立物件
2.2 有括號
Test *a = new Test(); // 呼叫預設建構函式(若由編譯器生成則成員初始化),堆上分配記憶體建立物件
2.3 有括號+引數
Test *a = new Test(2); // 呼叫建構函式Test(int a),堆上分配記憶體建立物件
2.4 系統內建型別
new int;// 分配記憶體,未初始化
new int();// 分配記憶體,初始化為0
new int(2);// 分配記憶體,初始化為2
new int{10};//c++11允許基本型別使用花括號對其進行初始化操作。