const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。
总结起来,可以初始化的情况有如下四个地方:
1. 在类的定义中进行的,只有const 且static 且integral 的变量。
2. 在类的构造函数初始化列表中, 包括const对象、Reference对象和一般变量。
3、在类的定义之外初始化的,包括static变量。因为它是属于类的唯一变量。
4、普通的变量可以在构造函数的内部,通过赋值方式进行。当然这样效率不高。
class DebugDelete { public: DebugDelete(std::ostream &s =std::cerr):os(s),i(2),j(3){}//流无法被拷贝template