简介
abort() 使程序直接报core dump错误
typeid() 判断对象是否是同一个对象的时候使用,感觉类似js里面的type什么鬼来着
比如
dynamic_cast强制类型转换指针
if(typeid(*bp) == typeid(dbox_w_strf)){}
else{}
又比如
if(dbox_w_str * dbp = dynamic_cast<dbox_w_str*>(bp))
又比如
template<class T> class Container{
public:
void put(T*);
T* get();
};
Ship* f(Ship*ps, Container<Ship>*c){
c->put(ps);
return c->get();
}
dynamic_cast,展示的是它是X类的或者某个由X类派生的类的对象。
typeid(*p).name() 检查类型的名称
static_cast 是基类到派生类的转换
reinterpret_cast运算符将允许将任意指针转换到其他类型,也允许做任意整数类型和任意指针类型之间的转换。从本质上说,所有这些转换都是不安全的的,或是依赖于实现的,或者既不安全又依赖于实现。
const_cast 对于const的变量的去const化
关于模板和异常
在我的心里,模板和异常是一个硬币的两面:模板机制通过扩展静态类型检查所能处理问题的范围,能够减少运行时错误出现的数量;而异常就是为处理这些错误而专门提供的一种机制。模板使人有可能管理异常处理问题,方式是将运行时错误处理的需要降低到一些最基本的情况下。
命名空间别名
namespace ATT = American_Telephone_and_Telegraph;