天天看點

c++11 新特性 (二)

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});

繼續閱讀