2016-04-16 11 views

Antwort

1

Im Allgemeinen ist eine "Interface" -Klasse (in fast allen OO-Sprachen) eine Klasse mit nur einer Schnittstelle, keine Daten und keine Implementierung.

In C++ ist solch eine Klasse eine Klasse mit reinen abstrakten Funktionen, also können Sie keine "Interface" -Klasse in C++ haben, wenn Sie nicht-virtuelle Funktionen haben.

+0

Danke Joachim Ich verstehe deine Art zu antworten –

1

C++ hat keine Schnittstellen per se. Somit sind ihnen keine Beschränkungen auferlegt.

Abstrakte Klassen werden normalerweise zur Darstellung von Schnittstellen verwendet. Es ist eine Frage der Konvention, ob Sie Standardimplementierungen für virtuelle Methoden definieren und finale Methoden in schnittstellenartigen Klassen zulassen.

+0

Seit C++ 11 gibt es ein kontextabhängiges Schlüsselwort "final", das "virtual" bedeutet, also ist Ihr letzter Satz ein bisschen vage, wenn Sie sich sowohl auf nicht-virtuelle als auch auf virtuelle Funktionen beziehen wollen. –

+0

Mit "final" meinte ich altmodische Vintage Finals, die kein "virtuelles" Keyword haben. 'Non-virtual' wäre wahrscheinlich korrekter Begriff. – bipll

+0

Nun, ironischerweise können "nicht-virtuelle Finale" durch abgeleitete Funktionen verdeckt werden, während echte Finale * nicht * versteckt werden können und somit sogar noch finaler sind :-) –

Verwandte Themen