zoukankan      html  css  js  c++  java
  • C++ 构造函数【新手必学】

    前言
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
    作者:可乐司机

    构造函数是C++里面的基础内容,特别重要,如果你刚学C++不久,不是很懂,建议可以先去小编的C++交流.裙 :九起久伞吧起伞留伞(数字的谐音)转换下可以找到了,里面有最新C++教程项目从0到进阶,有问题多请教里面的人,进步更快哦

    1. 定义

        与类同名、无返回值类型的成员函数。

        析构函数是对象创建的一部分,在创建对象时,会被自动调用;创建对象后,析构函数就不能再被调用

        默认析构函数:不带参数,或者所有参数都有默认值的的析构函数,析构函数可以重载。

        类的析构函数一般是公开的,但是有时也把析构函数声明为私有的(如单例模式中就把析构函数声明为私有的),其作用是限制创建该类对象的范围。

    2. 调用

        根据参数进行重载,决定调用哪个析构函数。

    3. 成员初始化表

        对于常量数据成员和引用数据成员(某些静态成员除外),不能在声明它们时进行初始化,也不能采用赋值操作对它们初始化。

        

    class A
    {
    int x;
    const int y=1;//Error
    int &z=x;//Error
    public:
    A()
    {
    x=0;//OK
    y=1;//Error,y是常量成员,其值不能改变
    }
    }

        它们的初始化要在成员初始化表中进行。

        

    class A
    {
    int x;
    const int y;
    int& z;
    public:
    A(): z(x),y(1)
    {
    x=0;
    }
    }

        或者

        

    class A
    {
    int x;
    const int y;
    int& z;
    public:
    A(): x(0),z(x),y(1)
    {
    }
    }


        成员初始化表的次序不决定它们的初始化次序,它们的初始化次序由它们在类中的定义的次序决定。如果你刚学C++不久,不是很懂,建议可以先去小编的C++交流.裙 :九起久伞吧起伞留伞(数字的谐音)转换下可以找到了,里面有最新C++教程项目从0到进阶,有问题多请教里面的人,进步更快哦

        如果类中含有常量数据成员或引用数据成员,一定要定义带有成员初始化表的构造函数,否则编译程序生成的默认构造函数是没有成员初始化表的,这样的类是不能创建对象的。

        在创建包含成员对象的对象时,首先调用本身类的构造函数,在进入本身类的析构函数之前,将会去调用成员对象类的构造函数,然后再执行本身构造函数的函数体(在继承中,要先调用基类的构造函数,再调用成员对象类的构造函数,最后执行自己的函数体)。即使成员对象初始化表为空,只要类中有成员对象,编译程序就会生成对成员对象构造函数的调用指令,只不过它调用的默认构造函数

  • 相关阅读:
    Python--day34--socket模块的方法
    Python--day32--ftp文件传输报错的原因
    Python--day32--struct模块
    Python--day32--复习:https和http的区别;黏包;黏包问题的解决方式;
    快捷键(随时补充)
    turtle 20秒画完小猪佩奇“社会人”
    Kibana使用教程
    Elasticsearch: 权威指南
    數據可視化大屏
    newtonsoft文檔說明
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12071733.html
Copyright © 2011-2022 走看看