C++构造函数理解

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-17 01:55:52

 正确理解Qt中构造函数:Widget::Widget(QWidget *parent) : QWidget(parent),ui(new Ui::Widget)

#include <iostream>

using namespace std;

class Base
{
    public:
        Base():m_num(0){
            cout << "this is Base()" << endl;
        }
        Base(int val):m_num(val + 1){
            cout << "this is Base(int val) and m_num = " << m_num << endl;
        }

    private:
        int m_num;
};

class BaseChild : public Base
{
    public:
        BaseChild(){
            cout << "this is BaseChild()" << endl;
        }
        BaseChild(int val) : Base(val), m_num(val){
            cout << "this is BaseChild(int val) and m_num = " << m_num << endl;
        }

    private:
        int m_num;
};

int main(int argc, char *argv[])
{
    BaseChild child1;
    BaseChild child2(5);

    return 0;
}

输出结果:

this is Base()
this is BaseChild()
this is Base(int val) and m_num = 6
this is BaseChild(int val) and m_num = 5

BaseChild是类, ::是作用域,::后面的BaseChild(int val)是构造函数,:后面的Base(val)是指定基类的构造函数,不明确指定的话是默认构造函数,n_num(val) 是对BaseChild类里面的成员变量做初始化。

 

Widget::Widget(QWidget *parent) : QWidget(parent),ui(new Ui::Widget)
理解:
    Widget是类, ::是作用域,::后面的Widget(QWidget *parent)是构造函数,
    :后面的 QWidget(parent)是指定基类的构造函数,不明确指定的话是默认构造函数,
    ui(new Ui::Widget) 是对BaseChild类里面的成员变量做初始化。

本文借鉴:https://blog.csdn.net/qq_41827665/article/details/84213220

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!