Qt每天一例9.迷惑的子父类转换

Posted 鱼酱2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt每天一例9.迷惑的子父类转换相关的知识,希望对你有一定的参考价值。

猜猜输出的打印是啥

#include <QCoreApplication>
#include <QtDebug>

class Father

public:
    Father()
        qDebug()<<"father make";
    ;
    ~ Father()
        qDebug()<<"father dead";
    ;

;
class Son : public Father

public:
    int  cake=666;
    Son():cake(23333)
        qDebug()<<"son make";
    ;

    ~ Son()
        qDebug()<<"son dead";
    ;
    void shout()
    
        qDebug()<<"son shout"<<cake;
    
;

int main(int argc, char *argv[])

    QCoreApplication a(argc, argv);
    Father *f = new Father;
    static_cast<Son*>(f)->shout();



    return a.exec();


90%你猜错了

father make
son shout -1414812752

为什么?
因为static_cast只是个类型转换,所以cake是个未初始化值。

以上是关于Qt每天一例9.迷惑的子父类转换的主要内容,如果未能解决你的问题,请参考以下文章

Qt每天一例14.char数组浅拷贝为QByteArray

Qt每天一例13.枚举转字符串

Qt每天一例5.打印Qt版本

Qt每天一例3.创建一个线程

Qt每天一例7.输出当前程序GID

Qt每天一例12.保留两位有效数字