C++中的多继承
来源:互联网 发布:微信开发框架java 编辑:程序博客网 时间:2024/06/05 23:56
多重继承:类有多个直接基类的继承。派生类继承所有基类的成员,通过在派生列表中指定多个基类而定义多个基类,每个基类需要一个单独的访问标号。若不定义访问标号,默认为private。
class DerivedPoint :public PointA,public PointB {};
派生类构造函数初始化所有基类
构造函数初始化式只能控制用于初始化基类的值,不能控制基类的构造次序。基类构造函数按照基类构造函数在类派生列表中的出现次序调用。
构造函数调用次序既不受构造函数初始化列表中出现的基类的影响,也不受基类在构造函数初始化列表中的出现次序的影响。
析构函数调用的次序与构造函数相反。
多重继承下的名字查找
多个基类作用域可以包含子类作用域。成员函数中使用的名字查找首先在函数本身进行,如果不能在本地找到名字,就继续在成员的类中查找,然后依次查找每个基类。在多重继承下,查找同时检查所有基类继承子树,如果在多个子树中找到该名字,则那个名字的使用必须显示指定使用哪个基类,否则,改名字的使用是二义性的。
如果两个基类都定义了同一个函数:
void print();
但是在派生类中更没有定义该函数,在使用该类的对象调用函数print()时,将产生二义性。必须明确的声明调用哪个基类的print()函数。dp.PointA::print();
首先发生名字查找
即使两个print()函数函数的形参表不同也是二义性。两个print()函数在两个基类中的一个对于子类可见,为public一个不可见为private,也是二义性。这是因为编译器首先找到一个匹配的声明,找到两个就是有二义性。然后才判断找到的声明是否合法。
- C中的继承和多态
- C#中的接口和继承多态
- C中的继承与多态
- C中的继承和多态
- C++:多继承中的二义性问题
- C中的继承和多态
- C中的继承和多态
- C中的继承和多态
- C中的继承和多态
- C中的继承和多态
- C中的继承和多态
- C中的继承和多态
- 【C++】c++中的继承
- 浅谈Objective-C中的继承
- 【C++】浅谈C++中的继承
- 【C++】浅析C++中的继承
- C语言中的类模拟和多态,继承
- C语言中的类模拟和多态,继承
- 算法导论-数据结构的扩张
- OK6410移植UBOOT 2012.10全部过程
- Heritrix1.14源码分析(2) 配置文件order.xml介绍
- hdoj_1160FatMouse's Speed
- 深入Linux网络编程(三):异步阻塞IO—epoll
- C++中的多继承
- Heritrix1.14源码分析(3) 修改配置文件order.xml加快你的抓取速度
- allegro.cfg文件不能打开
- python操作MongoDB
- VC++中的string 用法
- Heritrix1.14源码分析(4)各个类说明
- 结构和类的区别
- Heritrix1.14源码分析(5) 如何让Heritrix在Ecplise等IDE下编程启动
- nyoj 620畅通工程(并查集)