【4】c++11新特性(稳定性和兼容性)—>final关键字

c++中增加了final关键字来限制某个类不能被继承,或者某个虚函数不能被重写。如果使用final修饰函数,只能修饰虚函数,并且放在类或者函数的后面。
修饰函数

#include 
using namespace std;

class Base
{
public:
    virtual void test() = 0;
};

class Child : public Base
{
public:
    void test() final
    {
        cout << "Child class...";
    }
};

class GrandChild : public Child
{
public:
    // 语法错误, 不允许重写
    void test()
    {
        cout << "GrandChild class...";
    }
};

int main()
{
    Base* c = new Child;
    c->test();

    Base* g = new GrandChild;
    g->test();
    return 0;
}

【4】c++11新特性(稳定性和兼容性)—>final关键字_第1张图片
在子类重写了这个方法,使用final标记后,孙子类就不能重写了。

修饰类

final修饰过的类,不允许被继承,也就是说这个类不能有派生类。

#include 
using namespace std;

class Base
{
public:
    virtual void test()
    {
        cout << "Base class...";
    }
};

class Child final : public Base
{
public:
    void test()
    {
        cout << "Child class...";
    }
};

// error, 语法错误
class GrandChild : public Child
{
public:
};

int main()
{
    Base* c = new Child;
    c->test();

    Base* g = new GrandChild;
    g->test();


    return 0;
}

【4】c++11新特性(稳定性和兼容性)—>final关键字_第2张图片

你可能感兴趣的:(c++11新特性,c++,开发语言)