2016-10-14 3 views
-1

Если класс наследуется в публичном режиме, так что публичные члены и защищенные члены базового класса будут публиковаться и защищаться от производного класса. Мой вопрос: если в производном классе нет защищенного раздела, что произойдет?О наследовании в C++

+0

В любом случае они будут неявно унаследованы. –

+2

Этот вопрос был бы лучше, если бы вы на самом деле протестировали это, включили тестовый код в вопрос и попросили дать объяснение/подтверждение результатов, полученных вами от вашего теста. – hyde

ответ

1

Ничего не произойдет. У класса просто не будет protected членов, кроме членов его базы (ов).

Если вы не пишете protected:, это не означает, что класс неспособен иметь [унаследованный] protected членов или что он не имеет «защищенного раздела». Синтаксис и семантика не так тесно связаны.

0

С открытым наследованием не имеет значения, не имеет ли производный класс вообще никакого защищенного раздела в его определении, или если он пуст. Защищенные члены базового класса наследуются в любом случае и остаются защищенными. То же самое для публичного, даже если производный класс не имеет публичного раздела в своем определении.

public:/protected:/private: в определениях Calss не действительно «секция», они просто синтаксис, чтобы отметить доступ к членам для членов следующих их до следующего public:/protected:/private:, и вы можете иметь любое количество таких «разделы» в любом порядке.

Смежные вопросы