c++虚函数的学习
2024-08-25 12:50:01
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;
}
有纯虚函数的类不能创建对象。在基类中只作方法的声明,具体的实现要由其子类来实现。
最新文章
- java 中变量的存储与引用
- [Android Pro] How to get recent tasks on Android “L”?
- 【风马一族_git_github】git的工作流程
- Ubantu 安装 LAMP环境
- [CSS]学习总结
- 如何在同一台服务器上安装多套通达OA
- Linux下mysql数据库root无法登录的情况
- 【原】AVAudio录制,播放 (解决真机播放音量太小)
- 【LeetCode】【Python题解】Single Number &;amp; Maximum Depth of Binary Tree
- Chrome渲染分析之Timeline工具的使用
- MAC使用GITHUB
- SQL 中 decode()函数
- PS字体倾斜、变形
- idea创建Maven多模块项目
- RobotFramework下的http接口自动化Get Response header 关键字的使用
- 【精解】EOS标准货币体系与源码实现分析
- c/c++ linux 进程间通信系列7,使用pthread mutex
- 【Mybatis】MyBatis之动态SQL(六)
- 【Codeforces Round 1132】Educational Round 61
- R12.2.7 开启预置用户账号
热门文章
- MVC form post 传值
- Substrings
- Spring boot将配置属性注入到bean类中
- COJN 0484 800502电池的寿命
- vijosP1499炸毁燃料库
- -_-#【userAgent】极速模式与非极速模式存在差异
- Hadoop Compression
- js中方法类型比较
- SKViedoNode类
- ubuntu12.04软件中心打开错误和 ubuntu 包管理之“:E: 读错误 - read (5: 输入/输出错误) E: 无法解析或打开软件包的列表或是状态文件。”的解决