摘要: 一、基本概述虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如上图所示类D继承自类B1、B2,而类B1、B2都继承自类A,因此出现如右图所示的局面(非虚基类)。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。最后形成如左图所示的情况。实现的代码如下:class A;//忽略C1和C2class B1:public virtual A;class B2:public virtual A;class D:public B1,public B2;二、为什么要引入虚拟继承虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继 阅读全文
posted @ 2013-08-06 21:17 z折腾 阅读(223) 评论(0) 推荐(0)
摘要: 非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用) 阅读全文
posted @ 2013-08-06 20:38 z折腾 阅读(734) 评论(0) 推荐(0)
摘要: 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。下面来看一段简单的代码 通过class A和class B的print()这个接口,可以看出这两个class因个体的差异而采用了不同的策略,输出的结果也是我们预料中的,分别是This is A和This is B。但这是否真正做到了多态性呢?No,多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。那现在就把main()处的代码改一改。 运... 阅读全文
posted @ 2013-08-06 20:35 z折腾 阅读(495) 评论(0) 推荐(0)