同名隐藏规则,虚基类C类型兼容规则.docx

同名隐藏规则,虚基类C类型兼容规则.docx

ID:50410712

大小:30.36 KB

页数:3页

时间:2020-03-08

同名隐藏规则,虚基类C类型兼容规则.docx_第1页
同名隐藏规则,虚基类C类型兼容规则.docx_第2页
同名隐藏规则,虚基类C类型兼容规则.docx_第3页
资源描述:

《同名隐藏规则,虚基类C类型兼容规则.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、类型兼容规则同名隐藏规则虚基类虚函数一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。具体表现在:派生类的对象可以被赋值给基类对象;可以初始化基类的引用。指向基类的指针也可以指向派生类。通过基类对象名、指针只能使用从基类继承的成员当派生类与基类中有相同成员时:若未强行指名,则通过派生类对象使用的是派生类中的同名成员。如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定作用主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题.为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝注意:在第一级继承时就要将共

2、同基类设计为虚基类。是非静态的成员函数。lvirtual只用来说明类声明中的原型,不能用在函数实现时。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。本质:不是重载声明而是覆盖。调用方式:通过基类指针或引用,执行时会根据指针指向的对象的类,决定调用哪个函数。#includeusingnamespacestd;classB0//基类B0声明{public:voiddisplay(){cout<<"B0::display()"<

3、{public:voiddisplay(){cout<<"B1::display()"<<#includeusingnamespacestd;classB1//声明基类B1{public://外部接口intnV;voidfun(){cout<<"MemberofB1"<usingnamecpacestd;classB0//声明基类B0{public://外部接口intnV;voidfun(){cout<<"MemberofB0"<

4、l;}};classB1:virtualpublicB0#includeusingnamespacestd;classB0//基类B0声明{public://外部接口virtualvoiddisplay()//虚成员函数{cout<<"B0::display()"<

5、oidfun(B0*ptr){ptr->display();//"对象指针->成员名"}{public://外部接口intnV;voidfun(){cout<<"MemberofB2"<

6、ublic://新增外部接口intnV2;};$~{cout<<"B1::display()"<display();}intmain()//主函数{B0b0;//声明B0类对象B1b1;//声明B1类对象D1d1;//声明D1类对象intmain(){D1d1;d1.nV=1;//对象名.成员名标识,访问D1类成员d1.f

7、un();intmain()//程序主函数{D1d1;//声明D1类对象d1d1.nV=2;//使用最远基类成员d1.fun();intmain()//主函数{B0b0,*p;//声明基类对象和指针B1b1;//声明派生类对象D1d1;//声明派生类B0*p;//声明B0类指针p=&b0;//B0类指针指向B0类对象fun(p);p=&b1;//B0类指针指向B1类对象fun(p);p=&d1;//B0类指针指向D1类对象fun(p);}d1.B1::nV=2;//访问基类B1成员d1.B1::fun();d1.B2::nV=3;//访问基

8、类B2成员d1.B2::fun();}}对象p=&b0;fun(p);//调用基类B0函数成员p=&b1;fun(p);//调用B1函数成员p=&d1;fun(p);//调用D1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。