C++编程习惯
1、初始化列表,尽量使用。
2、函数是否加const,只用而不改变就推荐加上const。如自定义的get某个属性的函数。
3、函数参数尽量用引用传递,返回值也优先考虑引用类型(引用必须保证在使用前,本体不能消失。所以返回值是局部变量,就不可以用引用类型,出了大括号,本体就消亡了)。
函数参数如果只拿来使用,不允许被改变,就要const修饰。
4、类的成员变量尽量放在private部分,不直接暴露出来,否则会打破C++的封装特性。可以通过public中函数来访问。
想被外界使用的函数,放在public部分。
编写自己的类时,思路顺序:
类有哪些成员变量(推荐放privite中)——>这些变量要做哪些事,依此来创建函数——>函数参数、返回值是否可变,能否用引用。
如果想让一些函数直接访问我privite中的变量,那就friend修饰这些函数(即友元函数)。
5、类内出现指针,建议不用默认的拷贝构造函数、拷贝赋值函数、析构函数。因为指针的出现,多半是要动态创建一些东西,在销毁的时候,没有delete所有,会造成内存泄漏。
下面是C++标准库里的String类,注意它的拷贝构造函数、拷贝赋值函数都使用了C语言的strcpy()深拷贝函数,即新开辟内存,而不是共用一块内存。
而自定义类,系统默认的拷贝构造函数、拷贝赋值函数都是只拷贝指针,即浅拷贝,共同指向一个本体。若拷贝赋值函数被启用,第1步就把本体消掉了,第2步会出问题。
下图为拷贝构造函数的内容(推荐模仿),String s1("hello"); 或String s2(s1);会调用此函数。

下图为拷贝赋值函数内容(推荐模仿),String s2=s1;会调用此函数。注意经典的三步:删除内存,创建内存,深拷贝存值

析构函数

C++编程习惯的更多相关文章
- 防御性编程习惯:求出链表中倒数第 m 个结点的值及其思想的总结
防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数 ...
- 漫谈C++:良好的编程习惯与编程要点
以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明 complex.h: # ifndef ...
- 10条PHP编程习惯助你找工作
过去的几周对我来说是一段相当复杂的经历.我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐 趣.我从来没有被开除过,所以很难不去想得太多.我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人, ...
- 10条PHP编程习惯
过去的几周对我来说是一段相当复杂的经历.我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐 趣.我从来没有被开除过,所以很难不去想得太多.我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人, ...
- [置顶] 学习JDK源码:编程习惯和设计模式
编程习惯 1.用工厂方法替代构造函数 Boolean.valueOf() 通过一个boolean简单类型,构造Boolean对象引用. 优点:无需每次被调用时都创建一个新对象.同时使得类可以严格控制在 ...
- iOS高效编程秘诀—坚持编程习惯
资料源于网络 习惯会影响一个人做事的方式,也会直接影响效率.我经常在项目完成后自我总结,有哪些做得好的,有哪些做得不好的?然后把一些好的流程记录下来,并且重新运用回编程中.那些能够坚持去做的流程,就变 ...
- 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨
Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...
- java的编程习惯影响程序性能
在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身. 养成良好的编程习惯非常重要,能够显著地提升程序性能. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...
- 养成良好的C++编程习惯(持续更新)
c++语言的灵活是建立在对编程者个人的编程素质的严格要求基础上的,好的C++编程习惯能避免很多问题. 没有好的编程习惯,极有可能编写一行代码,编译器能报十几个错误,而且 ...
- js代码之编程习惯
编程习惯: 异常处理 如果你没有使用异常处理的习惯,这可能是因为你并未真正的理解它的作用.当你正确使用异常处理之后,你会发现你的代码最显著的变化就是:少了很多的 if-else 语句 . 虽然在 JS ...
随机推荐
- 13 IO流(十)——BufferedReader/BufferedWriter 装饰流
Buffered字符包装流 与Buffered字节装饰流一样,只不过是对字符流进行包装. 需要注意的地方 Buffered字符流在Reader与Writer上有两个新的方法:String readLi ...
- 查看线程CPU利用率
查看线程CPU利用率 方法1:利用ps命令查看对应的线程 1. ps -ef | grep 进程名称 2. ps -mp 进程ID -o THREAD,pid,tid,cmd,time,%cpu,%m ...
- cocos版本说明
一直知道cocos是做游戏的,想学习一下,结果去官网一看就懵逼了.Cocos Creator,Cocos2d-x,cocos studio,Cocos2d-js,Cocos2d-x-lua,那一种才是 ...
- open_vPGPv
加密 // create an instance of the library PGPLib pgp = new PGPLib(); // Import the main company public ...
- springboot笔记05——profile多环境配置切换
前言 一个应用程序从开发到上线,往往需要经历几个阶段,例如开发.测试.上线.每个阶段所用到的环境的配置可能都是不一样的,Springboot 应用可以很方便地在各个环境中对配置进行切换.所以,今天主要 ...
- metasploit、msfvenom生成木马入侵电脑及手机
简介 msfvenom msfvenom a Metasploit standalone payload generator,Also a replacement for msfpayload and ...
- js校验规则--去空格、加空格
为了更加直观,有些号码需要加空格: // 拼接空格,每4位加一个空格 let bankAccount = '6228888888888888888'; let blank_value = bankAc ...
- JavaScript 数组去重的那几种方法
数组去重是最常见的面试题,现在总结一下我所知道的几种 首先第一个就是es5 最常见的循环比较 var array= [1, 1, 2]; function test(nums) { for (var ...
- org.springframework.dao.DuplicateKeyException: 问题
转自:https://blog.51cto.com/chengxuyuan/1786938 org.springframework.dao.DuplicateKeyException: a diffe ...
- TableCache设置过小造成MyISAM频繁损坏 与 把table_cache适当调小mysql能更快地工作
来源: 前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸. 如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新 ...