初始化对象
C++提供两种使用构造函数来初始化对象的方式。
第一种方式是显式的调用构造函数。(在栈上分配内存
A a = A();
A a = A(1);
另一种方式是隐式的调用构造函数,格式更紧凑。(在栈上分配内存
A a; // 等价于 A a = A();
A a(1); // 等价于 A a = A(1);
构造函数还可以与new
一起使用。(在堆中动态分配内存。
A a = new A(); // 记得要 delete a;
A a = new A(1); // 记得要 delete a;
注:
A a;
隐式使用默认构造函数时,变量a
后面不能加括号,
否则A a();
会被编译器认为是函数声明。
示例
class A
{
public:
A() {}
A(int m) {}
};
// 函数声明,声明了一个返回A类型的函数a7
A a7();
// 函数定义
A a7()
{
return A();
}
int main()
{
// 变量定义,调用默认构造函数
A a1;
A a2 = A();
// 变量定义,调用非默认构造函数
A a3(1);
A a4 = A(1);
// 使用new,在堆中动态分配内存
A *a5 = new A();
delete a5;
A *a6 = new A(1);
delete a6;
// 调用函数a7
A a8 = a7();
return 0;
}
网友评论