1.nullptr 專門形容指針為空
2.強類枚舉:
enum Direction {
Left, Right
};
enum Answer {
Right, Wrong
};
3靜态斷言,可在編譯時作判斷
static_assert( size_of(int) == 4 );
4.構造函數的互相調用 delegating constructor
class A {
public:
A(int x, int y, const std::string& name) : x(x), y(y), name(name) {
if (x < 0 || y < 0)
throw std::runtime_error(“invalid coordination”);
if (name.empty())
throw std::runtime_error(“empty name”);
// other stuff
}
A(int x, int y) : A(x, y, “A”)
{}
A() : A(0, 0)
{}
private:
int x;
int y;
std::string name;
};
5.final 禁止虛函數被重寫
class A {
public:
virtual void f1() final {}
};
class B : public A {
virtual void f1() {}
};
報錯!
禁止被繼承
class A final {
};
class B : public A {
};
報錯!
6.override 重寫:主要是檢查重寫的方法對不對得上基類的方法。
class B : public A {
virtual void f1() override {}
};
7.可以在定義的時候,給成員初始化!
8.lambda 傳參清單:
[a] a為值傳遞
[a, &b] a為值傳遞,b為引用傳遞
[&] 所有變量都用引用傳遞。目前對象(即this指針)也用引用傳遞。
[=] 所有變量都用值傳遞。目前對象用引用傳遞。
以上内容參考文章https://www.jianshu.com/p/d0a98e0eb1a8
9.tuple:是一個N元組,可以傳入1個, 2個甚至多個不同類型的資料
auto t1 = make_tuple(1, 2.0, “C++ 11”);
auto t2 = make_tuple(1, 2.0, “C++ 11”, {1, 0, 2});