提示:本笔记是个人学习侯捷C++课程的总结笔记,欢迎来信指正批评!
文章目录
- C++学习笔记(七)
- 一、Composition(复合)
- 二、Delegation(委托)(composition by reference)
- 三、Inheritance(继承)
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、Composition(复合)templateclass queue{ …… protected: deque c; public: bool empty() const{return c.empty();} void pop() {c.pop_front();} };
1.构造函数由内而外,Container的构造函数首先调用Component的default构造函数,然后才执行自己。
2.析构函数由外而内Container的析构函数首先执行自己,然后才调用Component的析构函数。
class StringRep;
class String{
public:
String();
String(const char* s);
……
private:
StringRep* rep; //pimpl
};
三、Inheritance(继承)
struct _List_node_base
{
_List_node_base* _M_next;
_List_node_base* _M_prev;
};
template
struct _List_node:public _List_node_base
{
_Tp _M_data;
};
1.构造由内而外,Derived的构造函数首先调用Base的default构造函数,然后才执行自己。
2.析构由外而内,Derived的析构函数首先执行自己,然后才调用Base的析构函数。
1.复合类和继承类的构造函数都是首先调用Base的构造函数,析构函数都是先执行自己的析构函数,然后在调用Base的析构函数。
2.base class必须是virtual,否则会出现undefined behavior



