注释的使用
- /* / 是从一个(/ )开始到 ( */)结束的。
- 重置输入流的错误标志,需要调用cin.clear()。
- int x=static_cast(0.0); ==类型转换==
- 从不建议在表达式中组合==有==符号整数和无符号整数。因为无符号整数unsigned int x=-1;在输出的时候会变成65535,因为-1的二进制是全1。
- wchat_c wide_str[]=L”\x10ff”; 两个字节的十六进制必须用宽字符。
- R “C:\windows” 在C++11中可以原样输出反斜线。
- decltype来确定表达式的类型,e.g. decltype(x+y) z=0;
- typeid是C++的关键字之一,等同于sizeof这类的操作符。
int x=0;
if(typeid(x+x)==typeid(int)){
cout<<12<<endl;
}
- & 按位与 | 按位或 ^按位异或
- 前缀递增是应当鼓励的,因为后缀递增需要创建被递增的对象的副本。
++n; //单独的前缀递增
n++; //单独的后缀递增
- << 和 >>都补得是0。
- C++的类型转换运算符
运算符 | 描述 |
---|---|
static_cast | 将数据转换为指定类型。这是一个简单的数据转换,不涉及指针或const属性 |
reinterpret_cast | 将一个指针转换为一个不同的基本类型 |
const_cast | 可用于从表达式中移除const属性,使得const指针可以被赋值给一个非const指针 |
dynamic_cast | 允许你通过一个类层次结构向下投,但前提是表达式实际上指向所涉及的类型 |
(类型)表达式 | C语言的类型转换,用于支持向后兼容,但正是的话不鼓励这么做 |
13. C++11中,基于范围的for语句。
//可以访问但不能修改
for(int i:array){
cout<< i <<endl;
}
//可以访问,也可以修改
for(int &i:array){
i=0;
}
14.异常处理
C++库中定义的基本异常类
异常 | 说明 |
---|---|
std::exception | 所有C++异常的基类。你可以调用what()方法来获取描述该异常的C字符串,该方法被所有子类继承。 |
std::logic_error | 从exception中派生。其中大部分是库函数,或操作符函数可能抛出但没有由编译器本身捕获的错误。 |
std::runtime_error | 从exception中派生。这个类包括常用的运行时错误。 |
逻辑错误异常
异常 | 说明 |
---|---|
std::bad_cast | 报告dynamic_cast表达式的无效使用 |
std::bad_typeid | 报告在某个对象上使用typeid操作符,结果有一个void类型的情况。 |
std::domain_error | |
std::invalid_argument | |
std::length_error | |
std:: out_of_range |
15. break 只退出当前循环,如嵌套循环,可通过设置标记使外侧while循环达到推出条件。
16. lambda 函数
//lambda in STL
#include <algorithm>
i