Static assertion
static_assert 是在编译时期的断言,作用不言而喻的。
语法是这样:
static_assert ( bool_constexpr , string )
其中:
bool_constexpr: 常量表达式
string: 如果bool_constexpr表达式为false, 这个string就是编译时候报的错误。
看看代码:
// run-time assert
assert(ptr != NULL)
// C++ 11
// compile-time assert
static_assert(sizeof(void *) == 4, 64-bit is not supported.);
Constructor delegation
之前我们知道,一个类的构造函数不可以调用这个类的其他构造函数。每个构造函数只能包含类的成员变量和共有函数。
// C++03
class A
{
void init() { std::cout << init(); }
void doSomethingElse() { std::cout << doSomethingElse()
; }
public:
A() { init(); }
A(int a) { init(); doSomethingElse(); }
};
但是C++11允许我们这么干!
// C++11
class A
{
void doSomethingElse() { std::cout << doSomethingElse()
; }
public:
A() { ... }
A(int a) : A() { doSomethingElse(); }
};