C++中判断成员函数是否重写

 更新时间:2017年04月07日 10:25:09   投稿:lqh  
这篇文章主要介绍了C++中判断成员函数是否重写的相关资料,需要的朋友可以参考下

C++中判断成员函数是否重写

判断一个成员函数是不是虚函数(重写),有两个三个条件:

  1. 两个成员函数各自在基类和派生类中定义;
  2. 基类中定义的成员函数必须带有关键字virtual,派生类的成员函数可带可不带。
  3. 这两个成员函数原型(函数名,函数参数,函数返回类型)必须相同。

注意:如果这两个函数的返回类型分别为基类和派生类,返回值为指向基类和派生类的指针或引用,则也构成重写。此返回类型称为协变。

调用这些成员函数时,使用对象指针,这样当指针指向不同的对象时,就可以调用不同类的成员函数。

下面给一个程序分析:

#include<iostream>
using namespace std;

class Grandam
{
public:
  virtual void introduce_self()
  {
    cout << "I am grandam." << endl;
  }
};

class Mother:public Grandam
{
public:
  void introdude_self()
  {
    cout << "I am mother." << endl;
  }
};

class Daughter :public Mother
{
public:
  void introduce_self()
  {
    cout << "I am daughter." << endl;
  }
};

int main()
{
  Grandam* ptr;
  Grandam g;
  Mother m;
  Daughter d;
  ptr = &g;
  ptr->introduce_self();

  ptr = &m;
  ptr->introduce_self();

  ptr = &d;
  ptr->introduce_self();
  return 0;
}

结果如图所示:

从结果可知,每次都执行了成员函数的虚函数introduce_self()版本,解决了继承来的二义性问题。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • C++ 算法精讲之贪心算法

    C++ 算法精讲之贪心算法

    贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解
    2022-03-03
  • C++ 基础教程之虚函数实例代码详解

    C++ 基础教程之虚函数实例代码详解

    虚函数在 c++ 的继承体系中是一个非常重要概念,让我们可以在子类中复写父类的方法。这篇文章主要介绍了C++ 基础教程之虚函数实例代码的相关资料,需要的朋友可以参考下
    2020-02-02
  • c++调用python实现图片ocr识别

    c++调用python实现图片ocr识别

    所谓c++调用python,实际上就是在c++中把整个python当作一个第三方库引入,然后使用特定的接口来调用python的函数或者直接执行python脚本,本文介绍的是调用python实现图片ocr识别,感兴趣的可以了解下
    2023-09-09
  • 彻底掌握C语言strcat函数的用法

    彻底掌握C语言strcat函数的用法

    strcat是用来拼接字符串的,它会将参数 src 字符串复制到参数 dest 所指的字符串尾部,本章带你了解它的使用并模拟实现它
    2022-05-05
  • C语言实现BMP图像闭运算处理

    C语言实现BMP图像闭运算处理

    这篇文章主要为大家详细介绍了C语言实现BMP图像闭运算处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工作价值,快来跟随小编学习一下吧
    2021-12-12
  • C语言链表完整操作演示

    C语言链表完整操作演示

    这篇文章主要为大家详细介绍了C语言链表的完整操作演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C++ 排序插入排序实例详解

    C++ 排序插入排序实例详解

    这篇文章主要介绍了C++ 排序插入排序实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言实现栈的示例详解

    C语言实现栈的示例详解

    栈是一种特殊的线性表,只允许从一端进出数据,称为后进先出,先进后出。本文主要为大家介绍了C语言实现栈的示例代码,感兴趣的可以了解一下
    2022-06-06
  • 详解C++循环创建多级目录及判断目录是否存在的方法

    详解C++循环创建多级目录及判断目录是否存在的方法

    这篇文章主要介绍了C++循环创建多级目录及判断目录是否存在的方法,文中代码有一个针对各种系统进行判断来加载不同头文件的方法,需要的朋友可以参考下
    2016-03-03

最新评论