C++
文章平均质量分 84
tjliupeng
这个作者很懒,什么都没留下…
展开
-
C++编程规范(五)类设计和继承
这一章最有价值的条款:3332.要清楚自己所编写的类不同的类有不同的目的,因此有不同的规则。对于值类(value class,如std::pair,std::vector):1.有一个公共析构函数,拷贝构造函数和带有值语义的赋值2.没有虚函数(包括析构函数)3.作为具体类使用而不是基类4.常在栈上实例化,或者作为另一个类的成员基类是类层次的基础:1.有一个public且virtual或者protected且nonvirtual的析构函数,有一个non public的拷贝构造和赋值操作符2.通过虚函数建立接口原创 2010-07-20 23:30:00 · 2436 阅读 · 0 评论 -
C++编程规范(一)组织和策略上的问题
0. 不要拘泥于小节(Dont sweat the small stuff, 知道什么不要标准化) 这一章最有价值的条款:0. 在编码规范方面,不应该制定过于死板的准则。一个专业的程序员应该能够很容易阅读和编写与自己习惯的编码风格有所不同的代码。我们可以要求在一个文件或一个工程中采用一致的代码格式化,但是不需要在公司范围内或多个工程中也要求一致的编码方式。重要的不是设定编程规范,原创 2010-05-29 08:37:00 · 693 阅读 · 0 评论 -
不使用sizeof获取数据类型的size
这是本人遇到的一个面试题目,当时想了一个间接的方法,就是声明两个变量,然后两个变量的地址相减。以下方法更直接:size_t a = reinterpret_cast(((long*)(0)+1)) -reinterpret_cast(((long*)(0)));如果不使用reinterpret_cast进行转换,结果就是1.原创 2010-05-29 08:31:00 · 539 阅读 · 0 评论 -
C++编程规范:前言
C++ Coding Standards是两位C++大牛Herb Sutter和Andrei Alexandrescu根据多年经验编成的一套规范,本来想全文翻译,后来看到已经有中文版出来了,也就算了,写写笔记也就行了(笔记里面有些语句借用了中文版的翻译文字,偶的翻译功底不够)。原创 2010-05-29 08:35:00 · 500 阅读 · 0 评论 -
C++编程规范(二)设计风格
这一章最有价值的条款:6. 5.一个实体应该有其内聚职责(Give one entity one cohesive responsibility)这里的实体包括变量,类,函数,命名空间,模块,库等。每个实体的职责应该很清晰,不能过于分散。一个具有若干毫不相干职责的实体通常难于使用和重用,难于设计和实现,应该选择目的单一的简单函数,小且目的单一的类,边界清晰的内聚模块。例1,标准C中的rea原创 2010-05-29 11:39:00 · 1070 阅读 · 0 评论 -
C++编程规范(三)编码风格
<br /><br />这一章最有价值的条款:14.<br /> <br />14.宁要编译和连接错误,而不要运行时错误<br />编译和连接错误属于静态检查,静态检查有以下好处:<br />静态检查独立于数据和控制流:动态检查要足够可靠,需要使用对所有输入都具有代表性的例子进行测试,这对最简单的系统来说都是令人生畏的。<br />静态表示的模型更可靠:通常,一个程序较少地依赖动态检查,更多地依赖于静态检查,说明了其设计比较好,因为程序建立的模型能使用C++的类型系统适当地表达。<br />静态检查不会导致原创 2010-06-07 12:02:00 · 930 阅读 · 0 评论 -
C++编程规范(四)函数和操作符
<br /><br />这一章最有价值的条款:26<br /> <br />25.恰当地使用值、(智能)指针或引用传递参数<br />要区分输入、输出、输入/输出参数,以及值和引用参数。<br />选择如何传递参数时尽量遵循以下准则:<br />对于输入参数<br />1.用const修饰作为输入参数的指针或引用;<br />2.对于原始类型(如char float)和拷贝开销较小的值对象(如Point,complex<float>),应采用值传递参数<br />3.对于其他用户定义的类型应采用const引原创 2010-06-08 21:00:00 · 738 阅读 · 0 评论 -
C++编程规范(六) 构造、析构和拷贝
<br /> <br />最有价值条款:51<br /> <br /> <br />47.以同样的顺序定义和初始化成员变量<br /> <br />这在Inside object model和effective C++里面都讲到了。 <br /> <br />成员变量总是按照在类定义中的声明顺序进行初始化,构造函数中的初始化列表的顺序被忽略。这么做的原因是需要确保用唯一的顺序销毁成员。一个成员的初始化尽量不要依赖于其他成员。 如果违反这条规则,很多编译器会发出告警。<br /> <br />48.构造函数中原创 2010-08-22 10:28:00 · 929 阅读 · 0 评论