1、_Pragma()。因为能力有限,目前写的库都是逻辑库和遵循C++风格,较少使用宏定义的高级用法,待续。
2、除0错误,不叫异常。
原理:
此异常非彼异常。 除0在Linux下收到的是SIGFPE信号,而非C++的exception。 收到SIGFPE,如楼上所说,进程直接被kill了。 |
在C++中,除零 是错误,而非 异常 在操作系统层面,除零 一般是异常 操作系统的异常 和 C++的异常 是无任何关系的两个不同概念 |
3、可变参数的使用:
1)
#ifndef LOG
#define LOG(...) {\
std::fprintf(stderr,"%s :\n",__FILE__);\
std::fprintf(stderr,"Line %d:\n",__LINE__);\
std::fprintf(stderr,__VA_ARGS__);\
std::fprintf(stderr,"\n");\
}
#endif
__VA_ARGS__只能适用于宏定义中
2)
va_start(args, i);//i为前一个参数,因为是在内存中不规范地进行读栈,所以需要一个哨兵,时开始节点,args指向i之后的一个地址
void foo(int i,...) { va_list args; std::string temp; va_start(args, i); temp = va_arg(args, std::string); LOG("i= %d,string = %s", i, temp.c_str()); va_end(args); }foo(12345, std::string("you are a stupid guy!!"));//对称操作,以string
传值,则以string解析,和socket原理类似,发生在单机程序内部
4、noexcpt(bool) 默认为true,以后写库要加上相关的说明,有利于别人正确的处理程序
5、static_assert 用于预编译情况使用
6、sizeof(Class::data)支持
7、final/override 已熟悉
8、匿名变量类型初始化模板,以及模板的默认参数需要重新看,变长模板---------------------------------重点,用起来
9、继承构造函数和委派构造函数已在项目实用,目前没遇到问题
10、左右值,以及转化规则需要重复看和使用。移动语义已经移动构造函数。 ----------------------重点
11、初始化列表比较熟悉,要小心类型收窄的编译错误
12、POD---------------------------------------------------------重点,看了忘了,要用,结合default 、delete属性使用
13、>>正确识别,主要是编译器问题。 gnu -std=c++11 即可启用C++11,VS2012以上已支持新词法。
14、auto decltype关于引用的推导要重复看-----------------------------------------重点
15、枚举和强枚举、联合体,熟悉使用
16、auto_ptr被放弃,代替方案:shared_ptr/weak_ptr/unique_ptr,确认赋值操作的区别和使用方法,还行。
17、编译时常量的使用------不是很熟,需要看书
18、线程类和原子类型一开始使用,线程的存储问题----------------------重点
19、lambda语法,已经开始使用很久了。---------重点之一,要小心传参和stl库之间的细节
原文地址:http://blog.csdn.net/jingzhewangzi/article/details/41516937