C++ Primer阅读心得(第一章、第二章上)

1.在iostream库中,除了cin和cout之外,还有cerr和clog对象,它们输出给标准错误stderr,其中clog是cerr的带缓冲版本(话说这么多年我怎么没见人用过?)

2.c++中每个表达式都有返回值,其中输入操作符>>和输出操作符<<的返回值是iostream对象本身(例如cin和cout),所以你可以写一长串的连续输入或者输出,

int a,b,c,d;
cin>>a>>b>>c>>d;
因为>>操作符返回cin对象,所以等同于:
cin>>a;
cin>>b;
cin>>c;
cin>>d;

3.c++中的注释包含//(注释一行)和/**/(注释一片)两种,推荐使用//注释你需要注释的每一行。因为如果使用/**/的话,没准中间有个*/的话代码就乱掉了,还不如老老实实的用//注释每一行。再说一种工作中遇到的奇葩的注释形式#if 0,也是一次注释一片的那种:

#if 0
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxxx
#endif

4.增加了char16_t 和 char32_t 两种为unicode字符集服务的字符类型,增加了long long类型,增加了nullptr用来取代NULL给指针赋空的初始值使用;扩展了前缀和后缀(注意:它们可以组合使用):

前缀:
u(unicode 16,char16_t)
U(unicode 32,char32_t)
L(宽字符,wchar_t)
u8(utf-8,char)
后缀:
u or U:代表unsigned
l or L:整数值代表long,浮点数代表long double
ll or LL:代表long long(c++11中新增类型)
f or F:代表float

5.char有时候是signed char,有时候是unsigned char,具体由编译器决定;所以当你需要一个小整数时,不要使用char,因为这依赖于编译器,而应该明确指定你需要的是signed char或者是unsigned char。

6.字符串字面值的连接:若干个字符串字面值之间,如果只有空格、制表符(/t)和换行符(/n)存在,那么他们会被自动连接为一个新的字符串字面值。例如:

   cout<<"This "
           "is "           
               "a "
           "cutted "
           "string!"
       <<endl;

会输出This is a cutted string!(泪奔,比java的字符串相加好多了)

7.反斜杠的使用:c++程序中,在一行的最后一个字符为'/'的话('/'之后不能有空格和制表符),本行与下一行会被当作同一行来处理。反斜杠通常被用在宏定义中,例如:

#define DO_STH do { /
    // do sth       /
}while(0);          /   

8.C++中变量的初始化有三种方式:一,直接初始化;二,复制初始化;三,列表初始化(c++11新增)

int val(1024);  //直接初始化(构造函数?)
int val = 1024; //复制初始化(拷贝构造函数?)
int val = {1024};//列表初始化
T val{x,y}; //列表初始化自定义对象,直接调用构造函数
return {x,y}; //返回一个使用x和y列表初始化的对象(调用构造函数产生临时对象)

9.初始化与赋值的区别:C++中赋值使用等号,很多时候初始化也使用等号,但是这两者是有区别的。初始化指的是创建新的变量并给予初始值,而赋值指的是擦除变量原有的值,使用新的值来替代,两者是完全不同的。

10.初始化时应当注意:同一语句中,不同变量的初始化应当分别进行。例如:

int val1 = val2 = 100; (错误)
int val1 = 100, val2 = 100; (正确)

11.变量的默认初始化(全局变量与类成员变量):定义在所有大括号外面的全局变量会被默认初始化;另外c++11中,类的数据成员如果没有人为指定初始值的情况下,会被默认初始化(真体贴~~Java万岁~~)。所有其他情况的变量都不会被默认初始化,一定要注意。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值