-
1. 内联函数应该在头文件中定义,这一点不同于其他函数。内联机制适用于优化小的、只有几行而且经常被调用的函数。2. 类的成员函数都有一个隐含的形参this,但不能显式地包含this指针,这样做是非法的。类的成员函数形参表后面跟的const修饰符在于说明为常量成员函数,这样的函数只能读取而不能修改调用它们的对象的数据成员。3. 没有形参的为默认构造函数。构造函数的初始化列表即在冒汗和花括号之间的代码:Sales_item():units……
-
2007年04月05日
使用预处理器进行调试 - [C++细节]
1. 可以使用预处理变量来避免重复包含头文件。同样可以使用类似的技术有条件的执行用于调试的代码:程序所包含的调试代码仅在开发过程中执行。当应用程序已经完成,并且准备提交时,就会将调试关闭。可使用NDEBUG预处理变量实现有条件的调试代码:
int main() {
#ifndef NDEBUG
cerr << "starting main" << endl;
#endif
//…
如果NDEBUG未…… -
1. 比较少见的用法是,为了执行某个case的代码后继续执行下一个case的代码,故意省略break语句。2. 一个普遍的误解:以为程序只会执行匹配的case标号相关联的语句。实际上,程序从该点开始执行,并跨越case边界继续执行其他语句,直到switch结束或遇到break语句为止。3. switch内部的变量定义:对于switch结构,只能在它的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳……
-
1. typedef和指针,看下面的例子:
typedef string *pstring;
const pstring cstr;
以上定义等价形式为“const string *cstr;”是错误的,应等价于“string *const cstr;”。
2. 用typedef简化指向多维数组的指针
typedef类型定义可使指向多位数组的指针更容易读、写和理解:
int ia[3][4] = {…};
typedef int int_array[4];
int_array *ip = ia;... -
2007年04月01日
标准库string类型 - [C++细节]
1. 必须包含头文件,提供合适的using声明:
#include
using std::string;
2. string标准库支持几个构造函数:
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3("value"); //将s3的值初始化为一个字符串字面值副本
string s4(n, 'c'); //将s4初始化为字符'c'的n个副本
3. string的size和empty操作
判断为空:
if (st.size() == 0) //或者
if (st.empty())
返回string的size操作...







