1.虚函数

#include<iostream.h>

class Base
{
public:
void print()
{
cout<<"Base"<<endl;
}
}; class Son:public Base
{
public:
void print()
{
cout<<"Son"<<endl;
}
}; void fun(Base *obj)
{
obj->print();
} int main()
{
Base base;
Son son;
fun(&base);
fun(&son);
return 0;
}

类Base和Son中都有print方法,Son继承Base类。在主函数中分别建立Base和Son的对象,在fun函数中调用对象的print()方法。运行结果如下

从结果中可以看出不论传的是父对象的地址还是子对象的地址,最终调用的都是父对象的print()方法。如果希望传父对象时调用父对象print()方法,传子对象时调用子对象的print()方法。则只需要将父类的print方法声明成虚函数就行。virtual void print(){}。

2.纯虚函数

(1)纯虚函数的定义

virtual 返回类型 函数名 (<参数>)=0;

#include<iostream.h>

class Shape
{
public:
virtual void show()=0;
}; class Circle:public Shape
{
public:
void show()
{
cout<<"Circle"<<endl;
}
}; class Rect:public Shape
{
public:
void show()
{
cout<<"Rect"<<endl;
}
}; void fun(Shape *shape)
{
shape->show();
} int main()
{
//Shape s;//纯虚函数的类不能创建对象
Circle circle;
Rect rect;
fun(&circle);
fun(&rect);
return 0;
}


有纯虚函数的类不能创建对象。在基类中只作方法的声明,具体的实现要由其子类来实现。

最新文章

  1. java 中变量的存储与引用
  2. [Android Pro] How to get recent tasks on Android “L”?
  3. 【风马一族_git_github】git的工作流程
  4. Ubantu 安装 LAMP环境
  5. [CSS]学习总结
  6. 如何在同一台服务器上安装多套通达OA
  7. Linux下mysql数据库root无法登录的情况
  8. 【原】AVAudio录制,播放 (解决真机播放音量太小)
  9. 【LeetCode】【Python题解】Single Number &amp;amp; Maximum Depth of Binary Tree
  10. Chrome渲染分析之Timeline工具的使用
  11. MAC使用GITHUB
  12. SQL 中 decode()函数
  13. PS字体倾斜、变形
  14. idea创建Maven多模块项目
  15. RobotFramework下的http接口自动化Get Response header 关键字的使用
  16. 【精解】EOS标准货币体系与源码实现分析
  17. c/c++ linux 进程间通信系列7,使用pthread mutex
  18. 【Mybatis】MyBatis之动态SQL(六)
  19. 【Codeforces Round 1132】Educational Round 61
  20. R12.2.7 开启预置用户账号

热门文章

  1. MVC form post 传值
  2. Substrings
  3. Spring boot将配置属性注入到bean类中
  4. COJN 0484 800502电池的寿命
  5. vijosP1499炸毁燃料库
  6. -_-#【userAgent】极速模式与非极速模式存在差异
  7. Hadoop Compression
  8. js中方法类型比较
  9. SKViedoNode类
  10. ubuntu12.04软件中心打开错误和 ubuntu 包管理之“:E: 读错误 - read (5: 输入/输出错误) E: 无法解析或打开软件包的列表或是状态文件。”的解决