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,为什么?原因有点复杂,先记住。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义