c++ primer 第一二章简要总结(查漏补缺)

1.在shell中,$? 是一个特殊的变量,它用于表示上一个命令的退出状态(即返回值)。当命令正常执行完毕时,它通常会返回 0;而当命令出现错误时,则会返回一个非零的值。因此,通过运行命令 echo $?,我们可以查看上一个命令的退出状态。如果输出为 0,则意味着上一个命令已经成功执行。否则,输出的值将取决于上一个命令的具体情况。

因此main函数如何正确返回,请返回0或者1。遇到错误再返回其余的退出状态。

2.通过cerr来输出警告和错误信息,clog来输出日志。(目前还不清楚这两个输出与普通的cout有什么区别)

3.cout<<endl会将所有程序的输出都写到输出流中,即刷新写缓冲区。

4.注释分为当行注释和界定符。界定符不能嵌套。

5.c++的算术类型包括:bool(未定义)char(1个字节),short(2个字节),int(4个字节),long(4个字节),long long(8个字节),float(4个字节),double(8个字节),long double(6或8个字节),wchar_t(2个字节),char16_t(2个字节),char32_t(4个字节)。其中int,short,long,long还有有符号和无符号的版本。

6.整形字面值:
0开头为八进制,如024;
0x开头为十六进制,0x24;
浮点数字面值:
默认为double类型
e后为指数;3.14159e0;
f后缀为float;
。。。见p37

7.列表初始化
int a(5);
int a=5;
int a={5};
int a{5};

如果会发送丢失信息的转换则一下不行
double d=3.14;
int a{ld};,b={ld}报错

8.默认初始化:定义与函数内部的值默认初始化为未定义,定义与函数之外的值默认初始化为0。具体来说,字符(未定义),整形(未定义),浮点数未定义,指针(null,0,nullptr),布尔(false)

9.通过作用域操作符(::)访问被覆盖的全局变量

10.const类型的值要被其他文件访问需要用extern const。顶层const类型的值必须要初始化

11.常量引用(例如const int&)可以绑定右值的原因是,编译器会自动在中间创建一个temp变量。

12.const的引用能引用到一个非const的值, const的指针也能取到一个非const。指针和引用指向的值都可以更改,但是它们不能被更改。

13.当在一行定义多个变量时,类型修饰符(*和&需要加在每个变量的上面)

14.顶层const表示本身是const,底层const表示指针指向的值是const。(引用值没有顶层const和底层const的概念,const指的都是当前的值)

15.看const指针能不能互相赋值,关键是看能不能通过非const的值去改变const值本身。例如int*=&(const int),这是不行的。

16.constexpr的右值只能是左值或者常量表达式。(本质上是更严格的const,能在编译时就得到结果)

17.constexpr的值只能是一个字面值类型或引用(暂时只知道算术类型,指针,某些结构体是字面值类型),或是存储在某个固定地点的位置(例如全局变量,静态变量)

理解constexpr最大的方法,就是理解constexpr变量要在编译前确定

补充:包含以下条件的结构体是字面值结构体:
所有成员变量必须是字面值类型。
结构体不能包含非静态数据成员的初始化器。
结构体不能包含任何用户自定义的构造函数。
结构体不能继承自其他类或结构体。
结构体不能有虚函数或虚基类。

18.类型别名 typedef char* aaa;
const aaa b;(这个const修饰的是aaa)

19.auto会去掉顶层const和&,并自动绑定与右值相同的类型。因此记得加上*和&等类型修饰符。(对常量的引用,对常量的取值,不会忘记顶层const)
多个auto定义最好不要定义到同一行。

20.decltype中如果是变量,则返回变量的类型,包括所有const和*和&
如果是解引用:decltype(*p)

21.头文件标识符依赖于预处理变量

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值