• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
p-boost-q
博客园    首页    新随笔    联系   管理    订阅  订阅
派生类重写方法
#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

class Super
{
    public:
        Super();
        virtual void someMether();
    protected:
        int mPritectedInt;
    private:
        int mPrivateInt;
};

class Sub : public Super
{
    public:
        Sub();
        void someMether() override;    //重写父类的someMether方法 
        void someOtherMether();
    private:
        double mPrivateDouble;
};

Super::Super()
:mPritectedInt(0)
,mPrivateInt(0)
{
    
}
void Super::someMether()
{
    std::cout << "Super's someMether\r\n" << std::endl;
}

Sub::Sub()
:mPrivateDouble(0.0)
{
    
}
void Sub::someMether()
{
    std::cout << "Sub's someMether" << std::endl;
}

void Sub::someOtherMether()
{
    std::cout << "Sub's someOtherMether" << std::endl;
}

int main(int argc, char** argv) 
{
    Super super;
    Sub sub;
    sub.someMether();
    sub.someOtherMether();
    return 0;
}

首先声明的时只有在父类的方法前写上virtual关键字,派生类才能重写这个方法,

建议在派生类的后边写上override,这并非是关键字,但是却起着关键字的作用,

override由两个作用:

1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);

2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。

 

posted on 2019-01-30 16:39  p-boost-q  阅读(642)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3