基类的指针指向派生类的对象
来源:互联网 发布:数据库建立一对一关系 编辑:程序博客网 时间:2024/05/10 23:58
说明:只要基类的成员函数是虚函数,派生类的同名函数(参数相同,返回值类型相同),函数体不同,不管有没有显式声明virtual都是虚函数。
派生类中virtual关键字可有可无,但是也是虚函数。
#include "stdafx.h"#include "iostream"using namespace std;class A{int x;public:A(int i) {x=i;}void show(){cout<<"A class show():x="<<x<<endl;}virtual void display(){cout<<"A class virtual display():x="<<x<<endl;}};class B:public A{int y;public:B(int i,int j):A(i) { y=j;}void show(){cout<<"B class show(): y="<<y<<endl;}void display()//前面有无virtual都可以{cout<<"B class virtual display():y="<<y<<endl;}};int main(int argc, _TCHAR* argv[]){A a(5),*pa;B b(10,20);pa=&b;pa->show();pa->display();system("pause");return 0;}
结论:
基类的指针指向派生类的对象,当调用同名的成员函数时:
1)如果在基类中成员函数为虚函数,那么基类指针调用的就是派生类的同名函数。virtual void display();
可以这么理解:因为该函数是虚的,所以会找真正实现的那个函数,所以调用派生类B中的 B class virtual display.
2)如果基类中成员函数为非虚函数,则调用的是基类的成员函数。void show();
因为基类是非虚的,已经完全实现了,所以没有必要再调用派生类的了,就调用基类的A class show()
1 0
- 基类的指针指向派生类的对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针指向派生类对象
- 基类指针静态强制转为派生类指针,基类指针必须指向派生类的基类子对象????
- 基类指针、派生类指针指向基类对象和派生类对象的4种方式
- 7.28基类对象的指针指向公用派生类对象的应用。
- C++ 基类指针指向派生对象/派生类指针指向基类对象
- ?第三讲中孙老师提到的this指针到底指向基类对象还是派生类对象?
- 基类指针指向派生类是安全的,而派生类指向基类则是不安全的
- 第十三周(例题)——例题熟悉(用指向基类对象的指针指向派生类对象)
- C++基类指针指向的派生类对象内存的释放
- C++中,基类的指针指向派生类的对象
- 指向派生类对象的基类指针与虚函数
- Filter Graph的创建,IFilterGraph2, IGraphBuilder, IcaptureGraphBuiler2的区别
- textField的光标是从1开始的
- wordpress查看文章内是否有缩列图
- 8个超酷炫仿苹果应用的HTML5动画
- 交换机arp只能查询本身三层所配置的网段
- 基类的指针指向派生类的对象
- CSS3——字体font
- 秒杀多线程第四篇 一个经典的多线程同步问题
- ubuntu下删除桌面主文件夹
- [每日关键词]2016年1月7日
- 深入理解BootStrap -- 按钮组工具栏9
- COMODO网络安全专业版8下载
- 用Jersey构建RESTful服务
- Android 打开系统蓝牙设置