0.委托
//委托:我有这个指针指向你,在我任何需要你的时候我就能调用你,委托给你任务
//委托(Delegation),也叫Composition by reference.
class StringRep;
class String{
public:
String();
String(const char* s);
String(const String& s);
String &operator = (const String& rhs);
~String();
....
private:
StringRep* rep;
};
//上面的这个设计模式很经典,称为pimpl,即pointer to implement
1.继承
由子类指向父类
子类的对象(Derived object)里有父类的成分(Base part)。
//继承
struct _List_node_base
{
_List_node_base* _M_next;
_List_node_base* _M_prev;
};
template<typename _Tp>
struct _List_node
: public _List_node_base
//表明继承关系
{
_Tp _M_data;
};
构造由内而外
Derived::Derived(...) : Base() {...};
析构由外而内
Derived::~Derived(...) {... ~Base() };