第四章:设计与声明18.让接口更容易被正确使用,不易被误用将你的class的public接口设计的符合class所扮演的角色,必要时不仅对传参类型限制,还对传参的值域进一步限制。19.设计class犹如设计type内置类型如int、float等,本质也是一个class,用户自定义的class的行为和状态应当与内置类型类似的。设计class时,首先要考虑构造和析构、然后是赋值操作如何实现、考虑class是否要继承某一已有class、尽量使你的class一般化等等需要考虑的问题。20.宁以pass-by-reference-to-const替代pass-by-value这个准则很常见,使用cons
第四章:设计与声明18.让接口更容易被正确使用,不易被误用将你的class的public接口设计的符合class所扮演的角色,必要时不仅对传参类型限制,还对传参的值域进一步限制。19.设计class犹如设计type内置类型如int、float等,本质也是一个class,用户自定义的class的行为和状态应当与内置类型类似的。设计class时,首先要考虑构造和析构、然后是赋值操作如何实现、考虑class是否要继承某一已有class、尽量使你的class一般化等等需要考虑的问题。20.宁以pass-by-reference-to-const替代pass-by-value这个准则很常见,使用cons
第六章继承与面向对象设计32.确定你的public继承塑模出is-a关系public继承意味着要塑模出is-a的关系,所以每一个子类对象也是相应的父类对象,故适用于父类对象的每一个操作也都适用于子类对象。33.避免遮掩继承而来的名称派生类中的名称(包括数据名称和函数名称(不考虑不同传参))会遮掩基类中的名称,这种机制类似于作用域,先从当前类中搜索名称,如果找不到则到基类中搜索,以此类推。这个名称遮掩规则主要是防止新建的子类继承了较为疏远的基类同名函数,这在大部分情况下是不期望的。如果期望不要遮掩,使用using显式暴露即可。34.区分接口继承和实现继承class的成员函数可分为三类:一般函数、
第六章继承与面向对象设计32.确定你的public继承塑模出is-a关系public继承意味着要塑模出is-a的关系,所以每一个子类对象也是相应的父类对象,故适用于父类对象的每一个操作也都适用于子类对象。33.避免遮掩继承而来的名称派生类中的名称(包括数据名称和函数名称(不考虑不同传参))会遮掩基类中的名称,这种机制类似于作用域,先从当前类中搜索名称,如果找不到则到基类中搜索,以此类推。这个名称遮掩规则主要是防止新建的子类继承了较为疏远的基类同名函数,这在大部分情况下是不期望的。如果期望不要遮掩,使用using显式暴露即可。34.区分接口继承和实现继承class的成员函数可分为三类:一般函数、
作者胡启明,腾讯云专家工程师,专注Kubernetes、降本增效等云原生领域,Crane核心开发工程师,现负责成本优化开源项目Crane开源治理和弹性能力落地工作。余宇飞,腾讯云专家工程师,专注云原生可观测性、成本优化等领域,Crane核心开发者,现负责Crane资源预测、推荐落地、运营平台建设等相关工作。田奇,腾讯高级工程师,专注分布式资源管理和调度,弹性,混部,KubernetesContributor,现负责Crane相关研发工作。引言业务的稳定性和成本之间的矛盾由来已久。在云原生时代,按需付费的成本模型催生出了自动弹性伸缩技术——通过动态申请、归还云上资源,在满足业务需求的前提下,降低
作者胡启明,腾讯云专家工程师,专注Kubernetes、降本增效等云原生领域,Crane核心开发工程师,现负责成本优化开源项目Crane开源治理和弹性能力落地工作。余宇飞,腾讯云专家工程师,专注云原生可观测性、成本优化等领域,Crane核心开发者,现负责Crane资源预测、推荐落地、运营平台建设等相关工作。田奇,腾讯高级工程师,专注分布式资源管理和调度,弹性,混部,KubernetesContributor,现负责Crane相关研发工作。引言业务的稳定性和成本之间的矛盾由来已久。在云原生时代,按需付费的成本模型催生出了自动弹性伸缩技术——通过动态申请、归还云上资源,在满足业务需求的前提下,降低
前言注意:这一章进行了重写,对应教程Dev分支第19章的项目,在更新完后面的项目后会替换掉原来第19章的教程在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成的各种格式的模型。然而,在DirectX中,将模型导入到内存后还需要我们进行处理,最终变成能让管线使用的顶点缓冲区、索引缓冲区、各种常量等,这就意味着我们需要关注这些模型数据的细节了。然而一个现实问题是,模型的格式有很多种,且每种格式内部的存储结构又各不相同,不仅可以是文本形式,还可以是二进制形式。在这一章中,我们将学习使用Assimp模型加载库,它支持很多种模型格式的导入,能够处理成Assimp统一
前言注意:这一章进行了重写,对应教程Dev分支第19章的项目,在更新完后面的项目后会替换掉原来第19章的教程在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成的各种格式的模型。然而,在DirectX中,将模型导入到内存后还需要我们进行处理,最终变成能让管线使用的顶点缓冲区、索引缓冲区、各种常量等,这就意味着我们需要关注这些模型数据的细节了。然而一个现实问题是,模型的格式有很多种,且每种格式内部的存储结构又各不相同,不仅可以是文本形式,还可以是二进制形式。在这一章中,我们将学习使用Assimp模型加载库,它支持很多种模型格式的导入,能够处理成Assimp统一
本文是深入浅出ahooks源码系列文章的第六篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文已收录到个人博客中,欢迎关注~背景大家在使用useEffect的时候,假如回调函数中使用async...await...的时候,会报错如下。看报错,我们知道effectfunction应该返回一个销毁函数(effect:是指return返回的cleanup函数),如果useEffect第一个参数传入async,返回值则变成了Promise,会导致react在调用销毁函数的时候报错。React为什么要这么做?useEffect作为Hooks中一个很重要的Hooks,可以
本文是深入浅出ahooks源码系列文章的第六篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文已收录到个人博客中,欢迎关注~背景大家在使用useEffect的时候,假如回调函数中使用async...await...的时候,会报错如下。看报错,我们知道effectfunction应该返回一个销毁函数(effect:是指return返回的cleanup函数),如果useEffect第一个参数传入async,返回值则变成了Promise,会导致react在调用销毁函数的时候报错。React为什么要这么做?useEffect作为Hooks中一个很重要的Hooks,可以