C++面经总结之《Effective C++》(二)
发布日期:2021-06-30 19:47:54
浏览次数:2
分类:技术文章
本文共 1336 字,大约阅读时间需要 4 分钟。
文章目录
前言
今天和老大哥们聚会,又接触了不少新事物。
争取今天把这个系列整理完,最近信息有点太多了,分析不过来了。先屯着,慢慢发。 请大家给我点时间,我缓一下。接下来,将会有大动作了。
13、智能指针
我就不多说,直接用。
18、让接口更容易被正确使用,不易被误用
中间跳过一波,不为啥,看不懂。
这个条款让我想起了“模板方法模式”,但是我讲不清楚这个模式,倒不是讲不清楚该怎么用,就是讲不清楚有什么用。现在又知道一个用法了。
就拿我做的第一个小demo来说,是一个输入输出控制函数。
这个demo也被广泛的应用与我的教学工作中,虽然最后交上来的答案都不是很理想,我且说,有兴趣的朋友自行实现:1、语言不限,最好是C/C++,Python封装的太好了,体现不出我们的水平2、输入一个字符串3、我要控制输入的为纯英文4、我要控制输入的为纯数字5、我要控制输入的可以有英文、数字、标点混搭6、基于以上3/4/5,我要控制输入长度一定7、我输错了要支持回删8、我要密文输入,不能在屏幕上显示我输入的是什么
这就是模板,错误输入将不被计数。
总好比屏幕上写一行:请输入英文、数字,然后我依旧可以随便输入,我输入一堆的标点,输入完跟我说输入不合法。不合什么法?不合法你允许我输入?22、将成员变量声明为private
我一直是这样做的。
那就这样。23、以non-member、non-friend替换member函数
以前不知道怎么回事,觉得老师这样是多一举,现在知道了。这还是模板方法模式。为了保护封装性。
假设:
class A{ public: a(); b(); c();}
解决一个方案,需要依次调用abc,难道要在场景类里面:
A *AA = new A();AA->a();AA->b();AA->c();
?
还是
class A{ public: run(){ a(); b(); c(); }}int main(){ AA->run();}
你怎么看?
26、尽可能延后变量定义式的出现时间
有的书或者教程会打着编程规范、编程艺术的幌子,跟你说变量定义统一写在函数的开头。在C语言里面才这样,不这样后面的变量将会无法分配资源,导致报错。但是C++并不这样。
你要清楚,一旦函数内部出现了分支,则有些对象可能根本不会有出镜的机会,那你那么急吼吼的定义它干嘛?
一旦涉及到变量定义,就会有构造和析构成本,不管它有没有被用上。
你不止应该尽可能延后变量的定义,最好延后到这个变量能够被赋值的那一刻。
当然,具体情况具体分析,如果遇到了循环中的临时变量,那另当别论。
循环无非两种情况,循环外定义和循环内定义:
1、1个构造函数+一个析构函数+n个赋值操作2、n个构造函数+n个析构函数
如果赋值的成本小于构造+析构的成本(变量不大),那就选择第一种方式。
这时候就看经验了。27、尽量少做转型动作
如果是你自己的转型操作,还是少做,尽量不做。
因为不同编译器,或者不同平台,它们可能不互认的。31、将文件间的编译依存关系降至最低
该用就得用呗,这要怎么降低?咱又不会吃饱撑着没事儿去引用一个用不着的头文件。
到这儿吧
转载地址:https://lion-wu.blog.csdn.net/article/details/115033379 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月24日 13时39分05秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Grid SearchCV(网格搜索)& Python实现
2019-04-30
ROS相关知识
2019-04-30
单目深度估计 monodepth2模型 代码
2019-04-30
位图索引Bitmap indexes
2019-04-30
YOLO算法(二)—— Yolov2 & yolo9000
2019-04-30
YOLO算法(三)—— Yolov3 & Yolo系列网络优缺点
2019-04-30
Python的__future__模块
2019-04-30
计算机视觉中的cost-volume的概念具体指什么(代价体积)
2019-04-30
启发函数heuristic 与 A*
2019-04-30
Image Pyramid(图像金字塔)
2019-04-30
Oracle 作业记录
2019-04-30
putty连接AWS配置(multimedia project)
2019-04-30
Hourglass Network 沙漏网络 (pose estimation姿态估计)
2019-04-30
OpenCV实战(二)——答题卡识别判卷
2019-04-30