1. sizeof格式:
    sizeof (type name); 
    sizeof (expr); 
    sizeof expr;
  2. 使用 sizeof 的结果部分地依赖所涉及的类型:

    对 char 类型或值为 char 类型的表达式做 sizeof 操作保证得 1。  

    对引用类型做 sizeof 操作将返回存放此引用类型对象所需的内在空间大小。

    对指针做 sizeof 操作将返回存放指针所需的内在大小;注意,如果要获取该指针所指向对象的大小,则必须对指针进行引用。

    对数组做 sizeof 操作等效于将对其元素类型做 sizeof 操作的结果乘上数组元素的个数。

    因为 sizeof 返回整个数组在内存中的存储长度,所以用 sizeof 数组的结果除以 sizeof 其元素类型的结果,即可求出数组元素的个数:

    // sizeof(ia)/sizeof(*ia) returns the number of elements in ia 
    int sz = sizeof(ia)/sizeof(*ia);
  3. 动态创建的对象可用初始化变量的方式实现初始化:
    int i(1024);              // value of i is 1024
    int *pi = new int(1024);  // object to which pi points is 1024
    string s(10, '9');                   // value of s is "9999999999"
    string *ps = new string(10, '9');    // *ps is "9999999999"
  4. 如果不提供显式初始化,动态创建的对象与在函数内定义的变量初始化方式相同(第 2.3.4 节)。对于类类型的对象,用该类的默认构造函数初始化;而内置类型的对象则无初始化。同样也可对动态创建的对象做值初始化(value-initialize)(第 3.3.1 节):  
    string *ps = new string();  // initialized to empty string
    int *pi = new int();  // pi points to an int value-initialized to 0
    cls *pc = new cls();  // pc points to a value-initialized object of type cls
  5. const_cast 将 const 对象转换为相应的非 const 类型的强制转换。
    static_cast 编译器隐式执行的任何类型转换都可以由 static_cast 显式完成。我们常常使用 static_cast 取代由编译器实现的隐式转换。
    reinterpret_cast 将操作数内容解释为另一种不同的类型。这类强制转换本质上依赖于机器,而且是非常危险的。
  6. 前自增/自减返回左值,后自增/自减返回右值
    //OK, 前缀返回左值
    std::cout << "++++i = " << ++++i << std::endl;
    std::cout << "----i = " << ----i << std::endl;
    //ERROR, 后缀返回右值
    //std::cout << "i++++ = " << i++++ << std::endl;
    //std::cout << "i---- = " << i---- << std::endl;
posted on 2011-05-02 19:14  cppfans  阅读(153)  评论(0编辑  收藏  举报