摘要:一、菱形继承 在众多编程语言中,支持继承这一特性的语言不在少数,但鲜有支持多继承的语言,因为其容易出现继承向上的二义性问题,比如臭名昭著的“菱形继承”。这里借用著名武侠小说《笑傲江湖》来举个例子说明这个问题。 我们知道,华山派有气宗和剑宗之分,其代表人物分别是岳不群和风清扬。岳不群膝下弟子令狐冲随其
阅读全文
摘要:一、抽象 C++中通过类实现了面向对象的三大特性之一——封装。在实现封装的过程中离不开抽象,那么什么是抽象呢?百度百科的解释是:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。简单理解就是从多个事物中寻找其共同点并提炼概括的过程。 这里就拿初中学习的平面几何图形来举个简单
阅读全文
摘要:一、还是继承引发的问题 尽管子类继承了父类的所有属性和方法,但并不是所以方法均在子类中适用,所以,针对父类中的个别方法,子类中会重新实现。 class A { public: A(){cout << "Create A" << endl;} virtual ~A(){cout << "Destroy
阅读全文
摘要:一、继承引发的问题 在《C++ Primer Plus》类继承那一章中,将发生类继承这一行为的两个类之间的关系定义为“is-a关系”,即“子类对象是一个父类对象”。可能这么说不太容易理解,以书中水果的例子来讲:水果类为基类,香蕉类为水果类的派生类。香蕉作为水果的一种,我们可以讲香蕉是水果,所以香蕉对
阅读全文
摘要:以下讨论仅针对无继承的情形。 一、无成员变量的空类 1.不含virtual关键字时为1 class A{}; int main(int argc, char* argv[]) { cout << sizeof(A) << endl; //结果输出为1 return 0; } 2.含virtual关键
阅读全文