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=== | ||
− | * | + | * {{ltt|cpp/keyword/virtual}}, {{ltt|cpp/identifier with special meaning/final}} |
− | + | [[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
[edit] Usage
- override specifier
[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. };