当前位置:首页 > 网络编程 > 编程语言与程序设计 > C++编程规范章节试读
出版社:人民邮电出版社
出版日期:2006-1
ISBN:9787115142054
作者:(美)Herb Sutter, Andrei Alexandrescu
页数:216页
《C++编程规范》的笔记-第21页
许多类型要求对这种共享对象进行串行访问,但是有些类型却不要求这样。后者通常要么从设计中去掉加锁需求,要么自己进行内部加锁,无论哪种情况,仍然需要留意内部加锁粒度的局限。
《C++编程规范》的笔记-第91页
如果允许多态删除,则析构函数必须是公用的,而且必须是虚拟的。……如果不允许多态删除,则析构函数必须是非公用的,而且应该是非虚拟的。
《C++编程规范》的笔记-第50页 - 第28条,优先调用++的前缀形式
++和--的标准形式是:
T &T::operator++(){ //前缀形式
//执行递增 //完成任务
return * this; //总是返回 *this
}
T T::operator++(int){
T old(*this);
++ *this;
return old; //返回旧值
}
前缀和后缀形式的输入工作量相当,但是前缀的效率更高一些,注意:后缀形式返回的是旧值!!!
《C++编程规范》的笔记-第76页
将私有部分隐藏在一个不透明的指针(即指向已经声明但是尚未定义的类的指针,最好是选择合适的智能指针)
《C++编程规范》的笔记-第51页 - 29条,考虑重载以避免隐含类型转换
没看懂这一节的意义。
《C++编程规范》的笔记-第54页
不要编写依赖于函数参数求值顺序的代码
《C++编程规范》的笔记-第43页 - 总是编写内部#include保护符,而非外部
为了防止重复包含,在.h文件中应该写:
#ifndef FOO_H
#define FOO_H
//文件内容
#endif
而不是在引用.h文件的源码中写
#ifndef FOO_H
#define FOO_H
#include foo.h
#endif
《C++编程规范》的笔记-第16页
让一个正确的程序更快速,比让一个快速的程序正确,要容易得太多,太多。
《C++编程规范》的笔记-第87页
在构造函数中用初始化代替赋值A():s1_("Hello, "), s2_("world"){}
《C++编程规范》的笔记-第58页 - 用组合代替继承
使用组合:用智能指针保存对象,减少编译时间.
考虑将虚拟函数声明为非public,将public成员函数声明为非虚拟(所谓的非虚拟接口模式NVI)
《C++编程规范》的笔记-第13页
软件简单为美:质量优于速度,简单优于复杂,清晰优于机巧,安全优于不安全。
《C++编程规范》的笔记-第14页
如果能够证明优化必要而且非常重要,尤其在数据量逐渐增长的情况下,那么应该集中精力改善算法的O(N)复杂性,而不是进行小型的优化,比如节省一个多余的加法运算。
《C++编程规范》的笔记-第4页
无法修改的库头文件可能包含引起警告(可能是良性的)的构造。如果这样,可以用自己的包含原头文件的版本将此文件包装起来,并有选择地为该作用域关闭烦人的警告,然后在整个项目的其他地方包含此包装文件。
《C++编程规范》的笔记-第182页
不要对非POD(Plain Old Data)进行memcpy操作或者memcmp操作
《C++编程规范》的笔记-第154页
在容器中只存储值和智能指针
《C++编程规范》的笔记-第31页
在函数声明中,要避免将通过值传递的函数参数声明为const。
《C++编程规范》的笔记-第140页
使用异常报告错误的优势:
1.异常不能不加修改地忽略
2.异常是自动传播的
3.有了异常处理,就不必在控制流的主线中加入错误处理和恢复了
4.对于构造函数和操作符报告错误来说,异常处理要优于其他方案