在C++中,final
关键字用于指定一个类或虚函数不能被继承或重写。这个关键字可以应用于类、虚函数。
1. final
修饰类
#include <iostream>
class Base {
public:
virtual void print() const {
std::cout << "Base::print()" << std::endl;
}
};
// Derived不能有子类
class Derived final: public Base {
public:
void print() const override {
std::cout << "Derived::print()" << std::endl;
}
};
int main() {
Derived d;
Base* ptr = &d;
ptr->print(); // 输出 Derived::print()
return 0;
}
2.final
修饰虚函数
#include <iostream>
class Base {
public:
virtual void print() const {
std::cout << "Base::print()" << std::endl;
}
};
class Derived : public Base {
public:
void print() const override final{ // 虚函数print不能被Derived子类重写
std::cout << "Derived::print()" << std::endl;
}
};
int main() {
Derived d;
Base* ptr = &d;
ptr->print(); // 输出 Derived::print()
return 0;
}