c++對象創建帶括號與無括號的區別


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM