2016-04-16 28 views
-2

C++のインタフェースは非仮想関数を持つことができますか?インタフェース対抽象クラスC++

または

C++のインターフェイスは、唯一の非仮想関数(プロトタイプ)を含めることができますか?

+1

「インターフェース」とはどういう意味ですか? –

答えて

1

一般的に「インターフェイス」クラス(ほぼすべてのオブジェクト指向言語)は、インターフェイスのみを備え、データがなく、実装されていないクラスです。

C++では、このようなクラスは純粋な抽象関数のみを持つクラスであるため、非仮想関数を持つ場合はC++で "interface"クラスを持つことはできません。

+0

おかげさまでヨアキム私はあなたの答えを理解しています –

1

C++にはインターフェイス自体がありません。したがって、それらには何らの制限も課されない。

抽象クラスは、通常、インターフェイスを表すために使用されます。仮想メソッドのデフォルトの実装を定義し、インターフェースのようなクラスの最終メソッドを許可するかどうかは、規約の問題です。

+0

C++ 11以来、 'virtual'を意味する文脈キーワード' final'があるので、最後の文は非仮想関数と最終的な仮想関数を参照しようとすると少し曖昧です。 –

+0

「最終的に」私は昔ながらのヴィンテージ決勝戦を意味し、「バーチャル」のキーワードが付いていないものを意味していました。 「非仮想」は、おそらくより正確な用語になります。 – bipll

+0

まあ、皮肉なことに、 "非仮想最終"は派生した関数で隠すことができますが、実際の最終は隠すことができないので、実際にはもっと最終的なものです:-) –

関連する問題