首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 承继

2012-10-30 
C++ 继承C++ 继承如何设计C++的类?子类和基类之间的关系?子类默认构造函数的初始化列表,多态性,虚构函数的

C++ 继承
C++ 继承

如何设计C++的类?子类和基类之间的关系?子类默认构造函数的初始化列表,多态性,虚构函数的应用?



上述代码的输出:
LibMat::LibMat default constructor!
Book::Book (Mason and Dixon,Thomas Pynchon) constructor
AudioBook::AudioBook (Mason and Dixon,Thomas Pynchon,Edwin Leonard) constructor

in gobal print(): about to print mat.print()
AudioBook::print() -- I am a  AudioBook object!
My title is : Mason and Dixon
My author is : Thomas Pynchon
My narrator is : Edwin Leonard
AudioBook::~AudioBook destructor
Book::~Book destructor
LibMat::~LibMat destructor!

构造函数的调用顺序:在使用AudioBook的时候,会最先初始化基类的基类LibMat,调用它的构造函数,然后再初始化基类Book,最后在调用AudioBook的构造函数。

析构函数的调用顺序:和构造函数的调用顺序是相反的。

构造函数初始化列表:首先初始化最底层的基类,依次初始化。

多态性:子类为了实现自己独特的功能而屏蔽掉基类的功能,用virtual作为关键词修饰,类的每一个对象都与一个虚函数列表,程序在编译阶段并不会指定要调用哪个函数,只有在运行时通过查找各个虚函数类表,找出对应的函数。
  比如上面的代码,AudioBook的函数print,当程序调用print时,会先查找ab对象的函数列表,发现Book 和 LibMat的print函数均是虚函数,则会调用ab自己的print函数。

热点排行