nullptr
C++11新特性,避免出现以下状况java
void fun(int i) { cout << "fun(int i )" << endl; } void fun(const char* i) { cout << "fun(const char* i )" << endl; } int main() { fun(nullptr); // ok fun(NULL); // compile err return 0; }
override
避免在继承时,本意是重写,却因为参数类型的错误,变成了重载ide
class B { public: virtual void f(short) {std::cout << "B::f" << std::endl;} }; class D : public B { public: //指定是对base的重写 virtual void f(int) override {std::cout << "D::f" << std::endl;} // compiler err };
final
相似java中的机制,将函数写死,不容许派生类进行重写函数
class D2 : public B { public: // 重写B的f函数,且不容许继承D2的派生类进一步重写f函数 virtual void f(int) override final {std::cout << "D2::f" << std::endl;} };