摘要: 将某些东西声明为const可帮助编译器侦测错误用法。const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。编译器强制实施bitwise constness,但你编写程序时应该使用“概念上的常量性”(conceptual constness)。当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。 阅读全文
posted @ 2011-03-19 10:42 橘子小酥 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 对于单纯常量,最好以const对象或enums替换#defines。对于形似函数的宏(macros),最好改用inline函数替换#defines。 阅读全文
posted @ 2011-03-19 10:38 橘子小酥 阅读(180) 评论(0) 推荐(0) 编辑
摘要: C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。 阅读全文
posted @ 2011-03-19 10:35 橘子小酥 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 操作符的含义——该操作符执行什么操作以及操作结果的类型——取决于操作数的类型。  如果两个操作数为正,除法(/)和求模(%)操作的结果也是正数(或零);如果两个操作数都是负数,除法操作的结果为正数(或零),而求模操作的结果则为负数(或零);如果只有一个操作数为负数,这两种操作的结果取决于机器;求模结果的符号也取决于机器,而除法操作的值则是负数(或零)。 阅读全文
posted @ 2010-12-21 17:07 橘子小酥 阅读(125) 评论(0) 推荐(1) 编辑
摘要: 数组  数组定义中的类型名可以是内置数据类型或类类型;除引用之外,数组元素的类型还可以是任意的复合类型。没有所有元素都是引用的数组。  除非显式地提供元素初值,否则内置类型的局部数组的元素没有初始化。此时,除了给定元素之外,其他使用这些元素的操作没有定义。不允许数组直接复制和赋值警告:数组的长度是固定的  与vector类型不同,数组不提供push_back或者其他的操作在数组中添加新元素,数组一经定义,就不允许再添加新元素。  如果必须在数组中添加新元素,程序员就必须自己管理内存:要求系统重新分配一个新的内存空间用于存放更大的数组,然后把原数组的所有元素复制到新分配的内存空间中。  导致安全 阅读全文
posted @ 2010-12-19 14:35 橘子小酥 阅读(407) 评论(0) 推荐(1) 编辑
摘要: 通常,头文件中应该只定义确定必要的东西。请养成这个习惯。标准库string类型  几种初始化string对象的方式[代码]  字符串字面值与标准库string类型不是同一种类型。  由于getline函数返回时丢弃换行符,换行符将不会存储在string对象中。  string对象的操作[代码]string::size_type类型  它定义为与unsigned型具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。  任何存储string的size操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。  和字符串字面 阅读全文
posted @ 2010-12-09 23:33 橘子小酥 阅读(608) 评论(0) 推荐(1) 编辑
摘要: 和其他整型不同,char有三种不同的类型:普通char、unsigned char和signed char,虽然char有三种不同的类型,但只有两种表示方式。可以使用unsigned char或signed char表示char类型。使用哪种char表示方式由编译器而定。  C++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。所以,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值。  对于实际的程序来说,float类型精度通常是不够的——float型只能保证6位有效数字,而double型至少可以保 阅读全文
posted @ 2010-12-09 16:41 橘子小酥 阅读(371) 评论(0) 推荐(1) 编辑
摘要: 标准库定义了4个IO对象。  处理输入时使用命名为cin的istream类型对象,这个对象也称为标准输入。  处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。  标准库还定义了另外两个ostream对象,分别命名为cerr和clog。    cerr对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。    clog对象用于产生程序执行的一般信息。  程序员经常在调试过程中插入出书语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致对程序崩溃位置的错误判断。  在写C++程序时,大部分出现空格符的地方可用换行 阅读全文
posted @ 2010-12-09 13:46 橘子小酥 阅读(223) 评论(0) 推荐(2) 编辑