意识形态1:构造函数对于自身成员的赋值操作尽量使用初始化列表完成。
常规形态:
public MyCls:MyCls(int iobj)
{
m_iobj=iobj;
}
意识形态:
public MyCls:MyCls(int iobj):m_iobj(iobj)
{}
意识形态2:使用const、enum、inline替换#define
常规形态:
#define PI 3.14
意识形态:
const double pi=3.14
意识形态3:尽可能使用const
如果const出现在星号左边,则被指物为常量;如果出现在星号右边,则指针本身为常量。
注意:const MyClass*与MyClass const * 是一个意思!
意识形态4:虚析构函数的用法
1>基类应该具备一个虚析构函数
2>非基类不要提供虚析构函数
3>具备其他虚函数的类(很可能作为基类)应该具备一个虚析构函数
意识形态5:析构函数绝对不要抛出异常
意识形态6:绝对不要在构造或是析构函数中调用虚函数,因为它们不会被传递给子类
意识形态7:operator=中需要考虑自我赋值的问题
意识形态8:
1>Copying函数设计时务必确保复制“对象内的所有成员变量”;
2>如果该对象为子类,则除此之外,还要复制“基类的全部成员变量”;
3>不要使用一个Copying函数实现另一个Copying函数,如果有必要,务必将共同部分放入第三个函数,而后二者共同调用之。
意识形态9:如果在new表达式中使用[],则相应的delete表达式一定也要使用[];反之,如果new表达式没有使用[],相应的delete表达式一定不要使用[]
意识形态10:函数的实参最好不要以嵌套构造函数的形式出现,尤其设计到指针new的时候,非常容易造成内存泄露。
错误形式:processWidget(std::tr1::shared_ptr<Widget>(new Widget),priority());
正确形式:std::tr1::shared_ptr<Widget> pw(new Widget); //事先将newed对象置入智能指针之中
processWidget(pw,priority());
说明:
错误形式的表达式核算涉及三个步骤:
1>调用priority
2>执行new Widget
3>调用tr1::shared_ptr构造函数
C++不同于C#或是Java,其构造函数的调用没有绝对的先后顺序。
如果此时new Widget先被执行,而调用priority出现异常,则指针便没办法再置入智能指针中,以实现动态释放的功能。此时即产生内存泄漏。
★意识形态11:函数设计时尽量使用址传递替代值传递
错误形式:bool Fun(Student s);
正确形式:bool Fun(const Student& s); //Student为自定义类型
说明:
1>值传递会导致构造函数与析构函数的多次不必要调用,成本较高。
2>值传递会导致对象在函数生命周期结束时被释放掉,容易丢失信息。
3>值传递容易导致意外的对象切割(derived class)现象。
4>使用const修饰的址传递方式,没有额外的构造析构函数调用,效率高,且对象在函数内部不允许变更,安全性好。
注意:该条款不适于内置类型及STL,仅适用于自定义类型!
★意识形态12:成员变量尽量声明为private
说明:类内部的成员变量往往声明为私有,并辅之于相应的属性函数,以提供更加细微的访问权限。同时,客户不会因为服务类内部一个变量的取消而导致大规模的代码变更,为工程后期的维护提供弹性。
注意:不要考虑protected,它的破坏度和public成员类似。
分享到:
相关推荐
sei-cert-cpp-coding-standard-2016-v01_c_安全编程_sei-cert-c-coding_S
下载的最新版Alibaba_Java_Coding_Guidelines-2.0.2.zip,解压后里面有个zip离线包,通过ide离线安装,测试真实可用。 适合IDE2018.1.6版本。
Algorithm-coding-interview-university.zip,一个完整的计算机科学学习计划成为一名软件工程师。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
下载的最新版Alibaba_Java_Coding_Guidelines-2.1.1.zip,解压后里面有个zip离线包,通过ide离线安装,测试真实可用。
Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 This document provides an overview of the coding tools defined in HEVC Version 1 and the Range Extension...
A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems
C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得 一看.
Nikeshbajaj-Line-Coding-Waveform-Coding-NRZ.zip
C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得一看.
C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得 一看.
主要来源是https://github.com/c0ny1/chunked-coding-converter 这里感谢下c0ny1师傅的分享 但基于此基础,这里是我个人已经编译完成好的,省去编译步骤,小白皆可使用,可以直接使用burp导入插件
Coding-Projects-in-Python.pdf
Cracking-the-Coding-Interview-Dragged.pdf
koa + 公众号,前后台开发的代码 ,请查看,有些技术问题,请联系,视频暂时不能上传,如果想看视频,请联系
Sparse-Coding-and-its-Applications-in-Computer-Vision
sei-cert-c-coding-standard-2016-v01.zip
sei-cert-cpp-coding-standard-2016-v01_c_安全编程_sei-cert-c-coding_SEICERT_certc_源码.rar
processing-creative-coding-and-computational-art-foundation.pdf
coding-problem-solutions-源码.rar
打造仿猫眼项目 以Dubbo为核心解锁微服务