Unter der Annahme, der folgenden Aufbau:C++ 11 Vererbungs Konstrukteuren und Zugriffsmodifikatoren
class Base
{
protected:
Base(P1 p1, P2 p2, P3 p3);
public:
virtual void SomeMethod() = 0;
}
class Derived : public Base
{
public:
using Base::Base;
public:
virtual void SomeMethod() override;
};
Sollte ich in der Lage sein Derived
‚Konstruktor als öffentliche hier angeben? VC++ gibt den folgenden Fehler:
d. H. Es ignoriert den Zugriffsmodifizierer über dem geerbten Konstruktor.
Ist dies eine Einschränkung der Funktion? Es macht keinen Sinn für die Klasse Base
einen öffentlichen Konstruktor zu haben, da sie niemals direkt instanziiert werden kann (wegen der rein virtuellen Methode).
[Beispiel von GCC 4.8, das es richtig macht.] (Http://ideone.com/7JpC2J) –
Warten Sie, was an Konstruktoren so besonders ist? Das gleiche gilt nicht für normale Funktionen ... – Mehrdad
@TemplateRex: Ich weiß, ich frage warum. – Mehrdad