C++中继承,虚函数的调用问题
来源:互联网 发布:jquery load页面和js 编辑:程序博客网 时间:2024/05/18 14:24
类继承代码如下
问:调用输出的结果是什么
class CA
{public:
virtual void fun1()
{
cout<<"CA::fun1()"<<endl;
}
void fun2()
{
fun1();
cout<<"CA::fun2()"<<endl;
}
};
class CB:public CA
{
public:
virtual void fun1()
{
cout<<"CB::fun1()"<<endl;
}
void fun2()
{
fun1();
cout<<"CB::fun2()"<<endl;
}
};
void main()
{
CA *p =new CB();
p->fun1();
p->fun2();
}
调用输出结果为:
CB::fun1
CB::fun1
CA::fun2
原因分析:
由于
CA *p =new CB();中,虽然p是CA指针,但是他指向的虚函数表是CB的虚函数表(多态),所以调用的虚函数是CB中的虚函数;
当子类有基类的同名成员,但是却不是虚函数的时候基类的同名函数会被覆盖掉(这个是Link错误,或编译错误)这个时候函数调用更具静态类型(就是编译时候的类型)
还有。。那个fun2里不是又调用了一次fun1嘛,只要fun1是虚函数,在子类里无论怎么调用,
都应该是用子类定义的函数
0 0
- C++中继承,虚函数的调用问题
- c++ 下的多重继承虚函数调用问题
- C++类继承中函数的调用
- java继承中构造函数的调用
- C#继承|继承中构造函数的调用
- C语言中有关外部函数调用的问题
- 在C 中子类继承和调用父类的构造函数方法
- C/C++中函数的传值调用、指针调用、引用调用问题
- c函数调用中指针传递问题
- C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定
- C++中构造函数中调用虚函数的问题
- C++中构造函数中调用虚函数的问题
- C++中构造函数中调用虚函数的问题
- 继承中虚函数的缺省参数值问题
- 多重继承下的虚函数调用
- 多重继承下的虚函数调用~
- 多重继承下的虚函数调用~
- 通过虚函数继承,父类调用子类中函数
- Java学习之输入+文本输出
- 电气设备新能源行业周报
- 关于Hibernate操作数据库不显示中文字符
- 文件管理器源码分析(三)
- HDU 4745 Two Rabbits【非连续最长回文子序列,区间DP】
- C++中继承,虚函数的调用问题
- HDU 4158
- ansible 安装
- jenkins自动构建.net时提示“任务失败,因为未找到“AxImp.exe”,或未安装正确的 Microsoft Windows SDK“
- 蓝桥杯 算法提高 身份证号码升级
- HTML5 XMLHttpRequest中的新功能
- 远程执行命令
- 25个Java机器学习工具&库
- Tip: mysql去除某个字段空白