类型兼容---子类的对象可以给父类指针赋值
2016-04-01 14:17
274 查看
一个公有派生类的对象在使用上可以被当做基类的对象,反之禁止。
也就是说:1.派生类的对象可以赋值给基类的对象
如
2、派生类的对象可以初始化基类的引用:
3、指向基类的指针可以指向派生类
例子:
也就是说:1.派生类的对象可以赋值给基类的对象
如
B:public A A a; B b; a = b;//语法上是允许的
2、派生类的对象可以初始化基类的引用:
void f(A &a) {} int main() { B b; f(b); }
3、指向基类的指针可以指向派生类
A *p; p = new B();
例子:
#include <iostream> using namespace std; class B0 //基类B0声明 { public: void display(){cout<<"B0::display()"<<endl;} //公有成员函数 }; class B1: public B0 { public: void display(){cout<<"B1::display()"<<endl;} }; class D1: public B1 { public: void display(){cout<<"D1::display()"<<endl;} }; void fun(B0 *ptr) { ptr->display(); //"对象指针->成员名" } int main() //主函数 { B0 b0; //声明B0类对象 B1 b1; //声明B1类对象 D1 d1; //声明D1类对象 B0 *p; //声明B0类指针 p=&b0; //B0类指针指向B0类对象 fun(p); p=&b1; //B0类指针指向B1类对象 fun(p); p=&d1; //B0类指针指向D1类对象 fun(p); } 结果: B0::display() B0::display() B0::display() 注意:尽管是将派生的对象赋值给了基类的指针,但全部调用的基类的函数,因为在子类中的同名函数会被基类同名函数覆盖。
相关文章推荐
- SQLite3 一列多行合并为一列一行
- java深复制与浅复制
- [BZOJ2002][Hnoi2010]Bounce 弹飞绵羊
- Google Gson 使用简介
- 5.七个重点网络协议
- NeuralTalk2---自动产生图片的语句描述
- ioctl()获取本地网卡设备信息
- 构造器与工厂方法的差别
- 编程语言教程书该怎么写: 向K&R学习!
- 转:DesiredCapabilities内容详解--Appium服务关键字
- inotify同步脚本
- 解决php5.2与mysql兼容问题
- 获取布局填充器(获取布局解析器)
- 数据结构中的7种排序算法
- 实例解说双缓冲
- echarts.js 做图表的插件
- linux内核打印数据到串口控制台,printk数据不打印问题
- ASP.NET-DropDownListFor绑定model数据
- 如何让网页适应所有的屏幕宽度+表格根据内容自适应
- COM口很多都被占用的解决办法