- 0
- 0
- 约4.54千字
- 约 5页
- 2018-01-10 发布于河南
- 举报
C中名字查找与继承
C++调用成员函数的步骤一般为:
(1) 首先确定函数调用的对象、引用或指针的静态类型。
(2) 在该类中查找函数,如果找不到就在直接基类中找,如此循环直到查找到最上层基类。
(3) 一旦找到了改名字就进行常规的参数类型检查。
(4) 假定函数调用是合法的,编译器就生成代码。如果函数是虚函数且通过引用或指针调用,则编译器生成代码以确定对象的动态类型运行哪个函数版本。
注意:名字查找发生在编译期(即使是虚函数调用),而且与参数检查是不同阶段。
如:
class Base
{
public:
void fun(){}
};
class Derived:public Base
{
public:
void fun(int a){}
};
Derived d;
d.fun();//调用出错,因为编译器首先找到的是Derived中的fun,所以不在查找,但是参数检查时发现类型不匹配。
对于通过基类指针或引用调用虚函数,同样编译器要在基类中查找函数名称,假定找到了函数名称,编译器就检查实参与形参是否匹配。这就是为什么虚函数必须在基类和派生类中拥有同一原型了。
名字冲突造成的覆盖问题
原则:如果基类和派生类使用相同名字的成员函数,在派生类作用域中派生类成员将屏蔽基类成员,即使函数原型不同,基类成员也会被屏蔽。
如:
class Bas
您可能关注的文档
最近下载
- 南京六合BRW400-315/31.5乳化液泵使用说明书.pdf VIP
- 混合动力城市客车车身骨架设计-课程设计论文.doc VIP
- 企业价值评估中收益法的理论与实践探究:基于多案例分析.docx VIP
- 城市客车车身骨架设计及模态分析分析.pdf VIP
- SAE_J1742_1998电线束高压连接.pdf VIP
- TigerTouch老虎控台教程详解.pdf
- Unit 7 A Good Read课时4 Section B 1a-1e(教学评教学设计)英语新教材人教版八年级下册.docx
- 欧洲规范-NF P94-093-中文版.pdf VIP
- 医院检验科网络应急预案.docx VIP
- 环境监测采样培训课件.pptx VIP
原创力文档

文档评论(0)