zoukankan      html  css  js  c++  java
  • new对象时,类名后加括号与不加括号的区别

    new对象时,类名后加括号与不加括号的区别

    #include <iostream>
    using namespace std;
     
    // 空类
    class empty
    {
    };
     
    // 一个默认构造函数,一个自定义构造函数
    class Base
    {
    public:
        Base() 
        { 
            cout << " default Base construct " << endl;
            m_nValue = 100; 
        };
        Base(int nValue) 
        { 
            cout << " custom Base construct " << endl;
            m_nValue = nValue; 
        };
     
    private:
        int m_nValue;
    };
     
    // 一个复合默认构造函数
    class custom
    {
    public:
        custom(int value = 100)
        { 
            cout << " default && custom construct " << endl;
            m_nValue = value; 
        }
     
    private:
        int m_nValue;
    };
     
    void main()
    {
        empty* pEmpty1 = new empty;
        empty* pEmpty2 = new empty();
     
        Base* pBase1 =  new Base;
        Base* pBase2 = new Base();
        Base* pBase3 = new Base(200);
     
        custom* pCustom1 = new custom;
        custom* pCustom2 = new custom();
     
        delete pEmpty1;
        delete pEmpty2;
     
        delete pBase1;
        delete pBase2;
        delete pBase3;
     
        delete pCustom1;
        delete pCustom2;
    }
    // Result:
    /*
    default Base construct
    default Base construct
    custom Base construct
    default && custom construct
    default && custom construct
    */

    至此足以。

    【2】加括号与不加的区别

      (1)加括号

        1. 若括号为空,即无实参项,那么理解为调用默认构造函数;

        2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或复合默认构造函数。

      (2)不加括号

        调用默认构造函数,或复合默认构造函数。

    【3】默认构造函数 与 复合默认构造函数的区别

    默认构造函数:编译器会为每一个类默认提供一个构造函数,称之为默认构造函数。默认构造函数一般参数为空。

    复合默认构造函数:一个由用户自定义的所有形式参数都赋有默认值的构造函数,称之为复合默认构造函数。

    两者联系:

    一个类中,若一旦有一个用户自定义构造函数,那么由编译器提供的默认构造函数就不再存在。用户自定义的构造函数为默认构造函数的重载版。

    默认构造函数不复存在时,用户必须为这个类再自定义一个复合默认构造函数(选所有自定义构造函数其中之一,把形式参数均赋默认值即可)。

    不论自定义构造函数(即构造函数的重载版)有多少个,只允许有一个复合默认构造函数。

    来源:

    new对象时,类名后加括号与不加括号的区别

  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/2018shawn/p/11471226.html
Copyright © 2011-2022 走看看