因为时间比较紧,邻近校招,但C++ Primer去年连码带看搞过一遍,许多细节不记得了,这里就依据一个大神的blog来复习:
https://blog.csdn.net/neicole/article/details/6761314
@ 001:这里提到要用cin.clear, 找到另一篇blog关于cin.rdstate()的用法,ios::goodbit, eofbit, badbit, failbit的用法
https://www.cnblogs.com/tonglingliangyong/p/3908463.html
@ 004:编译器还可以找出的错误:
语法错误:出现C++语言文法上的错误;
类型错误:C++中每个数据项都有其类型;
声明错误:C++程序中每个名字都要先声明后使用
@ 006:1. 类的名字是什么? 2. 它在哪里定义? 3. 它支持什么操作?
这里总结下命名空间的概念:
1. 在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。
可以通过extern声明同一程序中的两个文件中的同名变量是同一个变量。
2. 每个命名空间是一个作用域;命名空间可以是不连续的(即可以在不同地方为命名空间继续添加成员);一旦看到含有完整前缀的名字,就可以确定改名字在命名空间的作用域内;模板特例化必须定义在原始模板所属的命名空间中;全局作用域中定义的名字也就是定义在全局明明空间中,使用隐式方式声明,使用时即::merber_name; 在嵌套的命名空间中定义的名字只在内层命名空间中有效,外层命名空间中的代码想访问他必须在名字前添加限定符;内敛命名空间中的名字可以被外层命名空间直接使用;未命名的命名空间取代文件中的静态声明,其中定义的变量居右静态生命周期。
命名空间可以设定别名: namespace xx = xxx; using声明遵循与过去一样得作用域规则;using指示容易引发二义性错误。
3. 当给函数传递一个类类型对象时,除了在常规作用域查找外,还会查找实参类所属的命名空间;using声明引入重载函数的所有版本。