V
主页
【C/C++】什么情况下需要封装get/set
发布人
小彭老师指出,面向对象封装的意义在于维护“不变量”。get/set就是保证在设置一个成员的同时,另一个与之有依赖的成员也能更新,相当于对set操作做了个hook。如果你的结构体完全是平凡类型,每个成员都能随意单独取值,设值,互不干扰。那就没必要设置getter/setter了,直接public暴露出来即可。 还顺便介绍了构造函数参数非常多时的解决方案:builder模式,以及C++20的指定初始化语法。 也介绍了接口臃肿的解决方案:接口多继承。多继承含有成员的普通类是错误的,糟糕的设计。但是接口完全可以多重继承,即使是禁止类多继承的Java也支持接口的多继承。同一个类当然可以支持多种接口,比如iostream就同时支持istream和ostream接口。 最后,也介绍了当一个参数需要可选的多个接口时的解决方案:定义共同的基类然后dynamic_cast,还提出了dynamic_cast的替代方案:toDerived(),在《以撒的结合》中就用了这种方案,例如Entity是实体类,可以通过Entity:toPlayer()获取玩家子类,如果不是玩家类则返回null。最后,还实现了经典的访问者模式,解决dynamic_cast和toDerived()流派不符合开闭原则的问题,这下对味了。 本期实验源码:https://github.com/parallel101/course/tree/master/slides/getset
打开封面
下载高清视频
观看高清视频
视频下载器
被双笙子佯谬拉黑了。4寸屏幕扣了好久的字
新来程序员这样用if判断直接被我开除了。
00程序员写的架构师简历把我快吓到了。
这么写代码,感觉要被劝退
一个学c++的看到rust的真实反映
【辟谣】C++根本没有堆和栈!
【C++】从零搭建聊天服务器(面试加分必备实战项目)
【录播】现代C++中的高性能并行编程与优化(持续更新中)
为什么C/C++分文件要写h和cpp?
室友:谁教你这样编程的?
【深缓中字】为什么6层嵌套循环让这个算法快了120倍?
现代C++教程 2023
【并行计算】CUDA在现代C++中如何运用?看这一个就够了!
亲戚孩子写的代码,一言难尽啊
为什么有事儿没事儿都返回int?
【C++项目实战】实现一个JSON解析器
毕设20行代码实现对话AI,被导师轰出了教室!
【GCC】C/C++初学者建议开启这些警告,编译期就排除大量危险隐患,提升代码质量
【C++真题解析】小彭老师解题+思路详解!mq白的现代C++习题集(第一期)
【C++】malloc/new追踪,可视化内存碎片,监测内存泄漏
【C++源码分析】微信二维码闪退,深扒源码后,竟发现远不止这一处bug!
【C++17】小彭老师陪你从零手搓HTTP服务器
你真的了解回调函数(Callback)吗?
【C++】类型擦除 + 工厂模式,告别 if-else
C++实现负数下标访问数组? | d2ds::Array技术解读第二期
不是哥们 你这C语言大作业是认真的吗
如何达到Linus所言的“看C代码就能知道背后的汇编代码是什么样子”
【异步C++】基于红黑树实现定时中断,超时自动终止任务
【C++20】从0开始自制协程库,有手就行(上)
【C++面试100问】第八十九问:什么时候用指针传参?什么时候用引用传参?
C++ 高频交易系统编写
【现代C++】静态反射实现自动JSON序列化
【C++】游戏开发常用的设计模式,高手都这样写?单例模式、组件模式、原型模式、访问者模式等
游戏编程知识课程 - 四分树(quadtree)
【C++11】内存序究竟是什么,彻底参悟C++内存模型(附多线程安全测试通用框架)
【公开课】C++11开始的多线程编程(#5)
【现代C++】函数式编程优雅实现信号槽
【C++模板课】闭源软件能否元编程?模板编译慢,无法分离,容易代码膨胀?variant的空间利用效率低?小彭老师一一解答
【C++11】区分左值、亡值、纯右值,及他们的引用
【公开课】从零开始打造3D游戏引擎(第四集:GLSL 着色器语言入门与顶点属性管理)