Как работает следующий код? Конструктор MakeFinal защищен, поэтому он не должен быть доступен для класса FinalUser. Но я не получил никаких ошибок сборки или выполнения.Защищенный конструктор в многоуровневом виртуальном наследовании в C++
class MakeFinal
{
protected:
MakeFinal(void) {};
public:
~MakeFinal(void) {};
};
class Final : virtual public MakeFinal
{
public:
Final(void) {};
~Final(void) {};
};
class FinalUser : public Final
{
public:
FinalUser(void) {};
~FinalUser(void) {};
};
int main()
{
FinalUser *finalUserHeap_ = new FinalUser();
return 0;
}
'FinalUser' не требует прямого доступа к' MakeFinal'. –