仮想関数にしないと、override指定子を付与することができないのはなぜでしょうか。
仮想関数でなくても、オーバーライドすることはできるのではないでしょうか。
コードを以下に示します。
c++
1#include <iostream> 2 3class Parent 4{ 5public: 6 void func() 7 {} 8}; 9 10class Child : public Parent 11{ 12public: 13 void func() // overrideを付与することができない 14 { 15 std::cout << "child" << std::endl; 16 } 17}; 18 19int main() 20{ 21 Child child; 22 child.func(); 23 return 0; 24}
上記を実行すると「child」と出力されます。
func()はオーバーライドされていると思うのですが、override指定子を付与することができないのはなぜでしょうか?
func()を仮想関数にすれば、override指定子を付与することができます。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/10 23:16
2019/04/11 00:03
2019/04/11 02:53 編集
2019/04/11 04:53
2019/04/11 07:04 編集