虚函数的可访问性
来源:互联网 发布:淘宝联盟官网下载 编辑:程序博客网 时间:2024/06/06 05:06
先来看一个代码:
输出:base son 没有问题
编译出错,main.cpp:29:10: error: 'base' is an inaccessible base of 'son'
#include <iostream>using namespace std;class base{ public: virtual void fun() { cout<<"base"<<endl; }};class son:public base{ public: void fun() { cout<<"son"<<endl; }};void dis(base &s){ s.fun();}int main(){ base a; dis(a); son s ; dis(s); return 0;}
输出:base son 没有问题
若一下代码:
#include <iostream>using namespace std;class base{ public: virtual void fun() { cout<<"base"<<endl; }};class son:public base{ private: //改动 void fun() { cout<<"son"<<endl; }};void dis(base &s){ s.fun();}int main(){ base a; dis(a); son s ; dis(s); return 0;}虚函数在子类,声明为private,但结果仍然如上,也没有编译错误。
再来一个:
#include <iostream>using namespace std;class base{ public: virtual void fun() { cout<<"base"<<endl; }};class son:private base //这里改的{ public: //注意是public void fun() { cout<<"son"<<endl; }};void dis(base &s){ s.fun();}int main(){ base a; dis(a); son s ; dis(s); return 0;}
编译出错,main.cpp:29:10: error: 'base' is an inaccessible base of 'son'
由此可知,派生类虚函数的可访问性与继承的方式和虚函数在基类的声明方式有关(public,或private)与派生类声明的方式无关(如public继承,但声明为private,但仍可访问)
- 虚函数的可访问性
- IBM 的可访问性
- Javascript - Function access scope analysis 函数在页面上的可访问性浅析
- C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测
- 对象私有数据的可访问性
- [C#] 成员的可访问性
- 属性可访问性低的解决方法
- 派生类到基类转换的可访问性
- C#的get set 可访问性
- 派生类到基类转换的可访问性
- 突出显示错误的可访问性
- 类成员的访问修饰符和可访问性
- 可访问性
- 可访问性不一致
- 可访问性级别
- 可访问性级别
- 可访问性不一致
- 可访问性总结
- 自定义ClassLoader
- 2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
- MySql常用命令总结
- 本小组做的作品,关于智慧城市方面的!!!
- RegOpenKeyEx 返回值 2
- 虚函数的可访问性
- 一个fork的面试题
- 翻编译指令
- 理解动画的参考文章
- photoshop图像叠加
- Linq遍历XML
- Captain:《我还是愿意尊它为龙书》
- 数据库操作
- 二十岁出头的时候上,你一无所有,你拥有一切。