Difference between revisions of "cpp/language/final"
From cppreference.com
m (Text replace - "{{cpp|" to "{{c|") |
m (Text replace - "/sidebar" to "/navbar") |
||
Line 1: | Line 1: | ||
{{title|final specifier}} | {{title|final specifier}} | ||
− | {{cpp/language/ | + | {{cpp/language/navbar}} |
Specifies that a [[cpp/language/virtual|virtual function]] can not be overridden in a derived class or that a class cannot be inherited | Specifies that a [[cpp/language/virtual|virtual function]] can not be overridden in a derived class or that a class cannot be inherited |
Revision as of 13:11, 15 June 2012
Specifies that a virtual function can not be overridden in a derived class or that a class cannot be inherited
Contents |
Syntax
Template:sparam final ;
|
|||||||||
class Template:sparam final Template:sparam
|
|||||||||
This section is incomplete Reason: function_declaration is probably wrong terminology |
Explanation
In a virtual function declaration, it specifies that the function may not be overridden by derived classes
final is an identifier with a special meaning when used in a member function declaration or class head, otherwise it's not reserved.
Example
struct A { virtual void foo() final; }; struct B final : A { void foo(); // Error: foo cannot be overridden as it's final in A }; struct C : B // Error: B is final { };
See also
- override specifier (since C++11)