一、继承
定义:新的类从已有类那里得到已有特性,原有类称为父类,新类称为子类。
形式:
class<派生类名>:<继承方式><基类名>
{
<派生类新定义成员>
};
二、复合(composition)
表示has a的关系,构造由内而外,析构由外而内。
三、委托
委托 是一种以指针方式的复合,一个类中有指针指向另外一个类。
classStringRep;//一个类
classString {public: String(); //另外一个
String(constString&s) String &operator=(constStirng&s);
~String();
private: StringRep* rep;//指针
};
四、虚函数与多态
1、non-virtual函数 : 不希望derived class 重新定义
2、 virtual函数 : 允许子函数修改
base class的析构函数必须是virtual,否则会出现undefined。
假设有下面这个类:
class Base {
public:
virtual void f( ) { cout << "Base::f" << endl; }
virtual void g( ) { cout << "Base::g" << endl; }
virtual void h( ) { cout << "Base::h" << endl; }
};
我们可以通过Base的实例来得到虚函数表。
Base b;
cout << "虚函数表地址:" << (int*)(&b) << endl;
cout << "虚函数表 — 第一个函数地址:" << (int*)*(int*)(&b) << endl;
五、设计模式
1、Template Method
预先写好框架,预留一些步骤的实现给子类。
C++ 中继承中的虚函数即可完成这样的功能。
2、Observer
观察者模式,,当其中的一个改变时,所有其它依赖的对象都能自动更新。
网友评论