码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-06-16 14:12:23      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:结果   cpp   practice   其他   fine   not   pre   fun   use   

#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++ 重写虚函数的代码使用注意点+全部知识点

标签:结果   cpp   practice   其他   fine   not   pre   fun   use   

原文地址:https://www.cnblogs.com/azbane/p/11031202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!