Betrachten Sie das folgende Snippet:Ändern Function Zugriffsmodus in Abgeleitete Klasse
struct Base
{
virtual ~Base() {}
virtual void Foo() const = 0; // Public
};
class Child : public Base
{
virtual void Foo() const {} // Private
};
int main()
{
Child child;
child.Foo(); // Won't work. Foo is private in this context.
static_cast<Base&> (child).Foo(); // Okay. Foo is public in this context.
}
Ist das legal C++? "Dies" ändert den Zugriffsmodus der virtuellen Funktion in der abgeleiteten Klasse.
... Hat es kompiliert und ausgeführt? – AndyG
@SauceMaster, das ist kein sehr guter Hinweis darauf, ob Code in C++ zulässig ist. Es gibt viele und viele C++ - Codes, die kompiliert und ausgeführt werden, aber immer noch undefiniertes Verhalten aufrufen. Ändern Sie Compiler, Compiler-Flags, Compiler-Version und Boom, es funktioniert nicht mehr. – Glen
Mit Glen vereinbart. Deshalb habe ich hier gefragt. – hlx236sk