本节条款讲述了多重继承的使用 多重继承一般情况下用的很少,原因在于多重继承容易出现程序错误。以下去两个典型的调用错误: 第一种错误如下代码: #include<iostream>using namespace std;class B{public:virtual int m(){}};class C {public:virtual int m(){};};class D :pu
该条款讲的内容就是以下3点: 第一点: pure virtual 成员函数的作用,纯虚函数的作用就是base class基类提供给derived class 派生类一个接口,而且只是起到接口的目的。 举到例子, class picture{public:virtual void Drew()=0;};class picture1:public picture{public:virtu
确定对象使用前已先被初始化 我们都明白如果程序中使用了未经初始化的数据成员,那么程序将会出现非预期的错误结果。 本节就是说明如何初始化的一般方法 首先 对于一个class来说,它的初始化使用成员初始化列进行,构造函数中所谓的“初始化”是赋值。如下,前者是初始化后赋值,后者是直接初始化。 class P{public:P(int x0, int y0){x=x0;y=y0;}priva
尽量以const、enum、inline替换#define 首先,大家要明白一个道理。#define是什么,有什么作用。很简单,大家都知道#define实现宏定义,如下代码: #define Flag 10 以后Flag的地方,预处理器都用10来代替,试想一下,如果你的函数中不小心定义了一个Flag,而你的用意只是一个局部变量,那么程序会出现什么问题 #define Flag 10#in
使用容器的时候 ,要避免内存泄露 众所周知,使用容器的好处是我们不用考虑容器的内存问题,容器本身具有自动内存管理的能力,包括动态申请内存和释放内存。 但是,当你存储的对象是指针的时候,你就要注意内存的人工释放了。 如下代码: void doSomething(){vector<Widget*>vwp;for(int i=0;i<num;i++){vwp.push_back( new Wi