C++ 重写虚函数的代码使用注意点+全部知识点

Posted azbane

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 重写虚函数的代码使用注意点+全部知识点相关的知识,希望对你有一定的参考价值。

#ifndef VIRTUALFUNCTION_H
#define VIRTUALFUNCTION_H
/*
 *覆盖虚函数的返回值,可以是本类类型的指针或者引用,且父类可转为子类。其他覆盖虚函数,返回类型必须相同,参数类型必须相同,参数类型的顺序必须相同。
 */

class virtualFunction

public:
    virtualFunction();
    virtual virtualFunction * own();
    virtual float defaultChange();
    virtual void param(int, double, float);
;

class parentFunction: public virtualFunction

public:
    parentFunction * own() override; //正确

    //double defaultChange() override; //报错 conflicting return type
    float defaultChange() override; //正确

    //void param(double, float, int) override;  //报错 maked override, but does not override
    void param(int, double, float) override; //正确

;

#endif // VIRTUALFUNCTION_H

cpp----------------------------------
#include "virtualfunction.h"
#include <QDebug>
virtualFunction::virtualFunction()




virtualFunction *virtualFunction::own()

    qDebug()<<"i am virualFunction son...";


float virtualFunction::defaultChange()

    qDebug()<<"i am son float...";


void virtualFunction::param(int, double, float)

    qDebug()<<"i am son , my param order is int - double - float...";


parentFunction *parentFunction::own()

    qDebug()<<"i am parentFunction father...";


void parentFunction::param(int, double, float)

    qDebug()<<"i am father, my param order is int - double - float...";


float parentFunction::defaultChange()

    qDebug()<<"i am father float...";



main-------------------------
#include "virtualfunction.h"

int main(void)

    virtualFunction *pvf;
    pvf = new parentFunction();
    pvf->own();
    pvf->defaultChange();
    pvf->param(0,0,0);
    //    system("pause");
    return 0;
打印结果---------------------
i am parentFunction father...
i am father double...
i am father, my param order is int - double - float...
D:\A_XBS\Qt_project\InheritanceClassPractice\build-inhe

 

以上是关于C++ 重写虚函数的代码使用注意点+全部知识点的主要内容,如果未能解决你的问题,请参考以下文章

C++多态(下)

C++ 中,类的继承:父类当使用虚函数时候,子类对该函数进行重写的话,属于子类成员函数对虚函数的覆盖!

关于C++中虚函数表的几点总结

C++——多态

C++:多态(重写,多态原理单继承和多继承的虚函数表)

C++:多态(重写,多态原理单继承和多继承的虚函数表)