天天看点

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

继续阅读