技术员 发表于 2018-1-10 09:52:43

QT单继承问题

如下程序,为什么在构造函数后面加冒号初始化就可以直接创建一个标签?mylabel(char *str):QLabel(str) 它是怎么创建的?

#include <QApplication>
#include<QLabel>
#include<stdlib.h>

class mylabel:public QLabel
{
public:

    mylabel(char *str):QLabel(str)
    {

    }
    void run(char *str)
    {
      system(str);
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
   
    mylabel my1("calc");
    my1.show();
    my1.run("notepad");
    return a.exec();
}

Kamikid 发表于 2018-1-10 11:30:25

你好,

这个句代码是典型的C++中通过父类构造对象的过程。

因为在类定义中已经声明了mylabel类继承与QLabel类,此时构造mylabel类可以直接使用父类的构造函数。即mylabel(char *str):QLabel(str),使用冒号调用父类构造函数。

这一点类似于Java里的super()函数。

相关知识:继承、多态、耦合
页: [1]
查看完整版本: QT单继承问题