11.组合与继承

1composition复合,表示has-a
image
内存上看
image

composition复合关系下的构造和析构
image
构造由内而外,container的构造函数首先调用component的default构造函数,然后才执行自己
container::container():component();//其中component()我们不用写,是编译器自己加上的
析构由外而内,container的析构函数首先执行自己,然后才调用component的析构函数
container::container(){component()};//其中component()我们不用写,是编译器自己加上的

2.delegation委托,composition by referen
image
String 类本身不直接持有字符数据,而是持有一个指向 StringRep 的指针 rep
String 类只是一个“柄”(Handle),真正的字符串数据和操作都委托给 StringRep 这个“身体”(Body)来完成。

3.inheritance继承,表示is-a
image
image
virtual表示虚函数。如果你的类会被别人继承做基类,那它的析构函数一定要加 virtual 关键字,不然当用基类指针 delete 派生类对象时,派生类的析构函数不会被调用,导致严重 bug(通常是内存泄漏)。
构造由内而外,析构由外而内

posted @ 2026-01-06 14:48  r5ett  阅读(2)  评论(0)    收藏  举报