• 1. 可以使用预处理变量来避免重复包含头文件。同样可以使用类似的技术有条件的执行用于调试的代码:程序所包含的调试代码仅在开发过程中执行。当应用程序已经完成,并且准备提交时,就会将调试关闭。可使用NDEBUG预处理变量实现有条件的调试代码:
    int main() {
     #ifndef NDEBUG
     cerr << "starting main" << endl;
     #endif
     //…
    如果NDEBUG未……
  • 2007年04月03日

    switch - [C++细节]

    1. 比较少见的用法是,为了执行某个case的代码后继续执行下一个case的代码,故意省略break语句。2. 一个普遍的误解:以为程序只会执行匹配的case标号相关联的语句。实际上,程序从该点开始执行,并跨越case边界继续执行其他语句,直到switch结束或遇到break语句为止。3. switch内部的变量定义:对于switch结构,只能在它的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳……
  • 2007年04月02日

    typedef - [C++细节]

    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日

    愚人节 - [生活沉淀]

    刚想起今天是愚人节,让我想起读大学那会。只要愚人节一到,好几个哥们都不会忘记耍我一把,而兄弟的话总是最可信的,所以我经常会被骗到。看到我受骗后,他们通常又会对我很同情的说上一句:“兄弟,今天是愚人节,哈哈哈……”。看到他们一脸……
  • 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操作...