一、什么是C++11中final说明符

C++11中final说明符是C++11新增的一个关键字,它可以修饰类、虚函数和成员函数,用来提高程序的性能和安全性,从而提高程序的效率。

二、final说明符的用法

1、final修饰类:final修饰的类不能被继承,可以防止类被意外修改,保证类的安全性。


class Base 
{
public:
    virtual void func() 
    {
        std::cout << "Base::func()" << std::endl;
    }
};

class Derived final : public Base 
{
public:
    virtual void func() 
    {
        std::cout << "Derived::func()" << std::endl;
    }
};

class Derived2 : public Derived  // error
{
};

2、final修饰虚函数:final修饰的虚函数不能被继承,可以防止虚函数被意外修改,保证类的安全性。


class Base 
{
public:
    virtual void func() final 
    {
        std::cout << "Base::func()" << std::endl;
    }
};

class Derived : public Base 
{
public:
    virtual void func() // error
    {
        std::cout << "Derived::func()" << std::endl;
    }
};

3、final修饰成员函数:final修饰的成员函数不能被继承,可以防止成员函数被意外修改,保证类的安全性。


class Base 
{
public:
    void func() final 
    {
        std::cout << "Base::func()" << std::endl;
    }
};

class Derived : public Base 
{
public:
    void func() // error
    {
        std::cout << "Derived::func()" << std::endl;
    }
};

三、C++11中final说明符的优点

1、提高程序的性能:通过final修饰类、虚函数和成员函数,可以让编译器更好的优化代码,提高程序的性能。

2、提高程序的安全性:final修饰的类不能被继承,虚函数和成员函数也不能被继承,可以有效的防止类、虚函数和成员函数被意外修改,从而提高程序的安全性。

3、提高程序的效率:final修饰的类、虚函数和成员函数,可以让编译器更好的优化代码,从而提高程序的效率。