C++

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

2017-03-30  本文已影响812人  何幻

初始化对象

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

上一篇 下一篇

猜你喜欢

热点阅读