Ich habe versucht, eine reine virtuelle Funktion in Base-Klasse zu schreiben, und ich gebe es einen Körper in der Nähe der Definition, wie es im Code unten gezeigt, wie ich weiß, ich sollte einen Kompilierfehler erhalten, aber alles hat gut funktioniert. Ist es etwas Neues, das mit C++ 17 kommt? (I verwendet Visual Studio 2017)Körper für reine virtuelle Funktion in C++ 17?
class Base {
public:
virtual void virtual_func() { std::cout << "This a virtual function from BASE" << std::endl; };
virtual void pure_func() = 0 { std::cout << "This a PURE virtual function from BASE" << std::endl; };
};
Dank
„Ich weiß, ich sollte einen Compiler-Fehler erhalten“ - warum? Es ist vollkommen legal, rein virtuelle Funktionen zu implementieren. –
Der Standard erlaubt dies nicht, aber VS (oder genauer gesagt, der Compiler von Microsoft). Um sich anzupassen, müssen Sie die Definition von der Deklaration trennen. –
@Neil Butterworth Ich denke nicht. Es kann nicht in C++ 14 kompiliert werden. http://ideone.com/EISKsp – javaLover