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