[C++] 对象初始化的方式

初始化对象

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;
}

参考

C++ Primer Plus, 6th - P354

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容