初始化對象
C++提供兩種使用構(gòu)造函數(shù)來初始化對象的方式。
第一種方式是顯式的調(diào)用構(gòu)造函數(shù)。(在棧上分配內(nèi)存
A a = A();
A a = A(1);
另一種方式是隱式的調(diào)用構(gòu)造函數(shù),格式更緊湊。(在棧上分配內(nèi)存
A a; // 等價于 A a = A();
A a(1); // 等價于 A a = A(1);
構(gòu)造函數(shù)還可以與new
一起使用酌住。(在堆中動態(tài)分配內(nèi)存。
A a = new A(); // 記得要 delete a;
A a = new A(1); // 記得要 delete a;
注:
A a;
隱式使用默認(rèn)構(gòu)造函數(shù)時阎抒,變量a
后面不能加括號酪我,
否則A a();
會被編譯器認(rèn)為是函數(shù)聲明。
示例
class A
{
public:
A() {}
A(int m) {}
};
// 函數(shù)聲明且叁,聲明了一個返回A類型的函數(shù)a7
A a7();
// 函數(shù)定義
A a7()
{
return A();
}
int main()
{
// 變量定義都哭,調(diào)用默認(rèn)構(gòu)造函數(shù)
A a1;
A a2 = A();
// 變量定義,調(diào)用非默認(rèn)構(gòu)造函數(shù)
A a3(1);
A a4 = A(1);
// 使用new逞带,在堆中動態(tài)分配內(nèi)存
A *a5 = new A();
delete a5;
A *a6 = new A(1);
delete a6;
// 調(diào)用函數(shù)a7
A a8 = a7();
return 0;
}