10 - 11 - static namespace 面向对象的组合、继承、委托

1 this指针、static

回答了前面视频函数只有一份,对象有好几个的问题。

静态数据:多个对象共用

静态函数:什么时候用?它没有this指针,所以不能访问一般的成员,只能存取静态数据。

 

2 C++标准库里的算法全部都是function template

 

3 namespace:

怕和别人重名,使用如下:

 

4 组合、继承和委托(只要了解这三种关系就行了)

前面的复数和字符串类一般不会和别人产生关系,这是基于对象的

改成下面这样,比较看的懂一些:

 

谐音记忆,has a(黑's),黑色表示有东西,复合(C的结构struct里面也可以放其它结构啊)

要习惯用图来表现类和类之间的关系

 

 

deque两端都能进出,功能比queue强大,所以可以直接调用deque的部分功能,可能原有100个功能,只开放了6个功能。

adapter:如上一行描述的,就是个adapter,变压器就是一种adapter。

设计的有点复杂:

 

有模板,还有各种指针的指针,从后往前推queue这个类的size。

复合的构造和析构:(之前背的是:先祖先,再客人,再自己,析构反过来)

 

delegation(也是拥有一个,但这个拥有是个指针,是白色菱形,不像黑色那么实的):

 

 

为什么叫委托:把任务委托给指针对象成员去做(这个解释好牵强)。

delegation:composition by reference(业内不叫by pointer)

pimpl:pointer to implementation

Handle/Body:左边是Handle,右边是Body,为什么有这个说法:左手边对外不变(对外接口不变),右手边是真正的实现

reference counting:三个字符串a,b,c都在用同一个hello,共享。a,b,c共享hello,a改了hello之后,只有b,c共享hello

 

继承:is-a(题外话:不可能用课程完全取代书籍)

 

 为什么是空心三角形?

继承最有价值的部分:跟虚函数搭配

         

 

复合有包含关系,继承也是...

父类的析构函数必须是virtual,为什么?原因有点复杂,先记住。

 

posted @   妖山鬼店  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示