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对象时,类名后加括号与不加括号的区别

  • 相关阅读:
    Camera光学、成像和 3A 算法 (视觉),camera开发
    VS编程常见的编译和链接错误
    python文档下载
    如何使用微信小程序云函数发送短信验证码
    微信小程序发送短信验证码完整实例
    微信小程序如何发送短信验证码,无需搭建服务器
    微信小程序60秒倒计时
    发送短信验证码后60秒倒计时
    java实现注册的短信验证码
    java + maven 实现发送短信验证码功能
  • 原文地址:https://www.cnblogs.com/2018shawn/p/14890104.html
Copyright © 2011-2022 走看看