C++的虚基类与虚函数
来源:互联网 发布:管家婆软件操作流程 编辑:程序博客网 时间:2024/05/18 00:11
虚函数加vritual关键字,目的是为了实现多态性,可以通过基类的指针和引用调用派生类的对象,从而产生不同的效果。
#include<iostream>using namespace std;class Base1{ public: virtual void display() const=0;//虚函数};class Base2:public Base1{ public: void display() const;//覆盖基类的虚函数};void Base2::display() const{ cout<<"Base2::display()"<<endl;}class Derived:public Base2{ public: void display() const;//覆盖基类的虚函数};void Derived::display()const{ cout<<"Dervied::display()"<<endl;};void fun(const Base1 *p){ p->display();}int main(){ Base2 base2; Derived derived; fun(&base2); fun(&derived); return 0;}纯虚函数不能在定义类中实现,但应该在能够实例化的派生类中实现。定义了纯虚函数的类为抽象类。
#include<iostream>using namespace std;class Base1{ public: virtual void display() const=0;//纯虚函数};class Base2:public Base1{ public: void display() const;//覆盖基类的虚函数};void Base2::display()const{ cout<<"Base2"<<endl;}class Derived:public Base2{ public: void display()const;//覆盖基类的虚函数};void Derived::display()const{ cout<<"Derived"<<endl;}void fun(const Base1 *p){//参数为指向基类对象的指针 p->display();}int main(){ Base2 b; Derived d; fun(&b); fun(&d); return 0;}
虚基类:虚基类是指虚继承中的基类,
#include<iostream>using namespace std;class Base0{//定义基类 public: Base0(int v):var0(v){} int var0; void show() const{ cout<<var0<<endl; }};class Base1:virtual public Base0{//Base0为虚基类 public: Base1(int v):Base0(v){} ~Base1(){}};class Base2:virtual public Base0{//Base0为虚基类 public: Base2(int v):Base0(v){}};class Derived:public Base1,public Base2{ public: Derived(int v):Base1(v),Base2(v),Base0(v){}//构造函数要从最远派生类赋值 ~Derived(){}//析构函数和普通类的构造函数没区别};int main(){ Derived d(2); d.var0; d.show();//直接调用虚基类的函数 return 0;}
阅读全文
1 0
- 【C/C++】理解虚基类、虚函数与纯虚函数的概念
- c++--多态性与虚函数
- [C++] 多态性与虚函数
- C++:类的多态与虚函数的使用
- [C++]虚函数与纯虚函数
- c++-虚函数与纯虚函数
- C语言字符串函数与C++string的字符串函数
- 【C++】内联inline、继承、重载与虚函数的解释
- C与C++的函数调用约定
- C 程序的外部变量与函数
- c与c++ static函数的区别
- C 程序的外部变量与函数
- c与c++ static函数的区别
- c与c++ static函数的区别
- c与c++ static函数的区别
- c与c++ static函数的区别
- C与C++函数的不同特性
- c与c++ static函数的区别
- linux进程监控和简单的重启
- mybatis中的分页
- 测试大小端
- oracle 命令分析2
- 解读支付宝接口程序
- C++的虚基类与虚函数
- 分页显示--html,js处理
- 自增长ID 越来越大,想重新从0开始排列 该怎么做?
- DMA
- maven,打包时不同环境不同的配置文件
- DBA必备技能:数据库挂起时进行转储分析诊断案例
- android init入口函数分析
- Swift实现糗事百科Demo(实战项目)
- sql远程连接openrowset配置 sql分布式连接openrowset配置 SQL连接到其它对象(OpenRowSet的应用) (这个是测试有效的)