- 博客(4)
- 收藏
- 关注
原创 条款05:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)
什么时候empty class(空类)不再是一个empty class呢?当C++处理过它之后。如果自己没有声明,编译器就会为它声明一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,编译器会为你声明一个default构造函数。所有这些函数都是public且inline。因此,如果写下:class Empty{};就好像写下了这样
2009-10-29 21:55:00
273
原创 条款04:确定对象被使用前已先被初始化
读取未初始化的值会导致不明确的行为。在某些平台上,仅仅只是读取未初始化的值,就可能让你的程序终止运行。更可能的情况的读入一些“半随机”bits,污染了正在读取动作的那个对象,最终导致不可测知的程序行为。 如果使用c part of c++而且初始化可能招致运行期成本,那么就不保证发生初始化。一旦进入non-C part of c++,规则有些变化。这就解释了为什么array(来自c pa
2009-10-28 21:31:00
477
原创 条款02:尽量以const,enum,inline替换#define(Prefer const,enum,inline to #define)
#define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编辑器看见;也许在编辑器开始处理源码之前被预处理器移走了。于是记号名称ASPECT_RATIO有可能没有进入记号表(symbol table)内。当用此常量获得一个编译出错信息,可能会带来困惑,因为这个错误信息也许会提到1.653而不是ASPECT_RATIO。解决之道是用一个常量替换上述的宏:
2009-10-24 18:33:00
447
原创 条款01:视C++为一个语言联邦(View C++ as a federation of languages)
今天的C++是个多重范例编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。 C++主要的次语言:C。C++以C为基础。区块、语句、预处理器、内置数据类型、数组、指针等都来自C。但当以C++内的C成分工作时,高效编程守则映照出C语言的局限:没有模板,没有异常,没有重载~~~Object-Oriented C++。这部分是C with Classes所
2009-10-24 15:08:00
617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人