C++ Primer 记录(一)

这是一本C++的圣经,以前上课的时候没有好好学,现在趁着这个机会好好回顾一下,同时着重掌握C++11的特性,里面很多知识点都是面试必考,应该反复多读理解并记好笔记。

第一章 开始

这一章比较基础,编者以一个书店程序的例子作为引入,本章着重记录一下几个之前没有注意到的细节。

(1)大多数系统中,在主函数main中的返回值被用来指示状态,返回值0表明成功,非0返回值的含义由系统定义,通常用来指出错误类型。

(2)在标准输入输出流中,以输出运算符“<<”为例。其接受了两个运算对象,左侧的运算对象必须是一个ostream对象,右侧的运算对象是要打印的值,计算结果就是左侧运算对象。“>>”也是一样的。

(3)endl操纵符,其的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中,缓冲刷新操作可以保证到目前为止程序产生的所有输出都真正写入输出流中,而不仅是停留在内存中等待写入流。

 

第二章 变量和基本类型

(1)当对象在创建时获得一个特定的值,即称为这个对象被初始化。同时要注意的是初始化和赋值是两个不同的操作。初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,用一个新值替代。

(2)列表初始化。这个是C++11新规定的,用花括号来初始化变量。形如int a{0}。列表初始化特点:如果我们使用列表初始化且初始化存在丢失信息的风险,则编译器会报错。

(3)extern声明使得名字为程序所知,定义负责创建与名字关联的实体。变量声明规定了变量的类型和名字,定义除了有这个功能,还申请存储空间,也可以赋一个初始值。变量只能定义一次,但可以多次声明。

(4)引用和指针。引用是一个对象的别名,无存储空间(实际上也占存储空间),在定义的时候必须被初始化,且与初始值绑定。指针本身是一个对象,在生命周期内可以先后指向不同的对象,无需在定义时赋初值。

(5)const限定符使其对象一旦创建后其值就不能再改变,所以const对象必须初始化。const+引用和const+指针都需要掌握

(6)常量指针(是一个指针,指向常量,即指向对象的值不可修改)和指针常量(自己就是一个常量,即自己不可修改指向的对象)

(7)constexpr常量表达式是指值不会改变且在编译过程就可以得到计算结果的表达式。

(8)using别名声明,和typedef一样。using SI = Salse_item

(9)auto和decltype。auto能让编译器去分析表达式所属的类型,decltype作用是选择并返回操作数的数据类型。

decltype和auto区别

在处理顶层const和引用的方式上不同

	const int ci = 42, &cj = ci;
 
	decltype(ci) x = 0;   // x 类型为const int
	auto z = ci;          // z 类型为int
 
	decltype(cj) y = x;   // y 类型为const int&
	auto h = cj;          // h 类型为int

还有需要注意的。

	int i = 42, *p = &i, &r = i;
 
	decltype(i) x1 = 0;       //因为 i 为 int ,所以 x1 为int
	auto x2 = i;              //因为 i 为 int ,所以 x2 为int
 
	decltype(r) y1 = i;       //因为 r 为 int& ,所以 y1 为int&
	auto y2 = r;              //因为 r 为 int& ,但auto会忽略引用,所以 y2 为int
 
	decltype(r + 0) z1 = 0;   //因为 r + 0 为 int ,所以 z1 为int,
	auto z2 = r + 0;          //因为 r + 0 为 int ,所以 z2 为int,
 
	decltype(*p) h1 = i;      //这里 h1 是int&,如果表达式是解引用操作,则可得到引用类型
	auto h2 = *p;             // h2 为 int.

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值