6~9

 
1、  对于定义的每个对象都提供一个初始值是一个比较安全的作法。对于全局域中定义的变量,系统自动初始化为0;对于在局部域中定义的变量则系统不提供自动初始,但对于容器类型(如vector)系统自动初始化为0,对于在定义时初始化了部分元素的数组,其他没有初始化部位自动初始化为0。如int ia[10] = {1,2,3};那么ia[3]~ia[9]被自动初始化为0,而ia[0] ,ia[1] ,ia[2]的值分别为1,2,3。
 
2、  string::size()计算的字符串长度,不包括字符串末尾自动添加的/0,但包括空格字符和转义字符(如/n),注意转义字符(/n)只能算一个长度单位。
 

3、  若引用所指向的对象不会随着引用的改变而改变,则引用一定要定义为const。例如const int ival = 10; const int * const &pi = &ival; //这里注意由于&ival表达式作右值,那么pi所指向的对象&ival不会改变,故第二个const的是必要的。 注意若将代码改为const int ival = 10; const int *pt = &ival; const int * &pi = pt; //ok!因为引用pi指向pt,pt的值可以改变,故pi的改变可以引起其引用对象pt的改变,故只需要一个const。还要注意此类情况发生在函数调用过程中:

    void manip( vector<int>& );

    void manip(  const vector<int>& );

    vector<int> f();

    extern vector<int> vec;

    int main()

    {

       manip(vec);   //调用void manip( vector<int>& ),因为其为没有额外限定修饰的精确匹配

       manip( f() );   //因为实参实存放函数f()返回值的临时单元(是一个右值),不能用来初始化非const引用参数,                           //故调用void manip(  const vector<int>& )

       return 0;

    }   

 

 

4、  typedef char *cstring; extern const cstring cstr; //等价于extern cstring const cstr;注意这里cstr是一个指向字符的const指针,也即是char *const cstr;而不是const char *cstr。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值