Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/identifier with special meaning/override"

From cppreference.com
< cpp
m (fmt: {{langlinks}}.)
m (See also: +virtual)
 
(3 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
===Usage===
 
===Usage===
 
* {{ltt|cpp/language/override}} specifier
 
* {{ltt|cpp/language/override}} specifier
 +
 +
===Example===
 +
{{source|
 +
struct b
 +
{
 +
    void f0() {};
 +
    void f1() {};
 +
    virtual void f2() {};
 +
    virtual void f3() {};
 +
    virtual void f4() {};
 +
    virtual void f5() {};
 +
};
 +
 +
struct d : b
 +
{
 +
    void f0() {};                        // OK. Neither: b::f0 nor d::f0 are virtual.
 +
    void f1() override {};              // Error: cannot override non-virtual b::f1.
 +
    void f2() override {};              // OK. Member function d::f2 is virtual.
 +
    virtual void f3() {};                // OK. Specifier 'override'  is optional.
 +
    virtual void f4() override {};      // OK. 'override' ensures b::f4 is virtual.
 +
    virtual void f5() override final {}; // OK. d::f5 is both overriden and final.
 +
};
 +
}}
  
 
===See also===
 
===See also===
* [[cpp/identifier with special meaning/final|{{tt|final}}]]
+
* {{ltt|cpp/keyword/virtual}}, {{ltt|cpp/identifier with special meaning/final}}
  
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}
+
[[de:cpp/keyword/override]]
 +
[[es:cpp/keyword/override]]
 +
[[fr:cpp/keyword/override]]
 +
[[it:cpp/keyword/override]]
 +
[[ja:cpp/keyword/override]]
 +
[[pt:cpp/keyword/override]]
 +
[[ru:cpp/keyword/override]]
 +
[[zh:cpp/keyword/override]]

Latest revision as of 16:38, 15 September 2024

 
 
C++ language
General topics
Flow control
Conditional execution statements
if
Iteration statements (loops)
for
range-for (C++11)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications (until C++17*)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
explicit (C++11)
static

Special member functions
Templates
Miscellaneous
 
 

[edit] Usage

[edit] Example

struct b
{
    void f0() {};
    void f1() {};
    virtual void f2() {};
    virtual void f3() {};
    virtual void f4() {};
    virtual void f5() {};
};
 
struct d : b
{
    void f0() {};                        // OK. Neither: b::f0 nor d::f0 are virtual.
    void f1() override {};               // Error: cannot override non-virtual b::f1.
    void f2() override {};               // OK. Member function d::f2 is virtual.
    virtual void f3() {};                // OK. Specifier 'override'  is optional.
    virtual void f4() override {};       // OK. 'override' ensures b::f4 is virtual.
    virtual void f5() override final {}; // OK. d::f5 is both overriden and final.
};

[edit] See also