C++基础知识学习笔记(二)

来源:互联网 发布:淘宝退货运费险规则 编辑:程序博客网 时间:2024/06/05 20:49

派生类和继承

继承------软件复用

1.  实例化一个派生类对象时,先调用基类的构造函数。若基类的构造函数没有参数或者没有显式定义基类的构造函数,定义派生类构造函数时不必显式初始化基类成员,甚至无需定义构造函数,编译器会自动调用派生类的默认构造函数,派生类的默认构造函数去调用基类的默认构造函数。派生类不能继承基类的构造函数和析构函数,故当基类含带参的构造函数时,派生类必须定义构造函数。

2. C++中一般使用成员初始化列表的方式构造派生类的构造函数,形式如下:

     派生类名::派生类构造函数名(参数表):基类构造函数(参数表),对象成员名(参数表),......,对象成员名n(参数表){}   其中,基类的参数可来自派生类的构造函数的参数表或者常数值或表达式。

3. 多重继承机制带来的歧义问题,采用虚拟继承机制解决。使用作用域运算符(::)消除多继承带来的歧义性。

4. C++中,如果要使公共基类只产生一个拷贝,应把该基类声明为虚基类,要求从基类派生新类时,使用关键字virtual将基类声明为虚基类。虚拟机制需要注意:

     1>在虚基类中定义带参构造函数,且未定义默认构造函数,在整个继承结构中,所有直接/间接派生类中都必须使用成员初始化列表调用虚基类的构造函数,初始化虚基类的成员;

     2>在同一继承层次同时包含虚基类和非虚基类,编译器先调用虚基类的构造函数;

     3>由于二义性问题的存在,实际使用中不建议使用多继承;

5. 多重继承的构造函数调用顺序

     1>任何虚拟继承基类的构造函数按照它们被继承的顺序构造;

     2>任何非虚拟继承基类的构造函数按照它们被继承的顺序构造;

     3>任何成员对象按照它们声明的顺序调用;

     4>派生类自己的构造函数。

 

 

原创粉丝点击