美文网首页C++
[C++] 对象初始化的方式

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

作者: 何幻 | 来源:发表于2017-03-30 16:46 被阅读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

    相关文章

      网友评论

        本文标题:[C++] 对象初始化的方式

        本文链接:https://www.haomeiwen.com/subject/ikrpottx.html