这两天有个C++新手问了我一个问题,他的工程当中有一段代码执行不正确,不知道是什么原因.我调了一下,代码如果精简下来,大概是下面这个样子: class IBaseA { public: ; int m_nTestA; }; class IBaseB { public: ; int m_nTestB; }; class CTest : public IBaseA,public IBaseB { public: virtual void fnA(){ printf("fnA\n"); }…
1.C++支持多重继承,但是一般情况下,建议使用单一继承. 类D继承自B类和C类,而B类和C类都继承自类A,因此出现下图所示情况: A A \ / B C \ / D 而类D中会出现两次A.为节省内存空间,可以将B.C对A的继承定义为虚拟继承,而A就成了虚拟基类.又叫钻石继承,菱形继承,最后形成如下图所示情况: A / \ B C \ / D 2.在标准I/O库中的类都继承了一个共同的抽象基类ios,那个抽象基类管理流的…