предположим, что у нас есть class A,B,C,D
, где A является базой, B, C находятся между ними, а D - в алмазной модели.Наследование диаманта со смешанными модификаторами наследования (защищенное/частное/общедоступное)
Примечание:
class B
наследует virtualy class A
в частном режиме,
class C
inherita virtualy class A
в защищенном режиме.
class A
{
public:
int member; // note this member
};
class B :
virtual private A // note private
{
};
class C :
virtual protected A // note protected
{
};
class D :
public B, // doesn't metter public or whatever here
public C
{
};
int main()
{
D test;
test.member = 0; // WHAT IS member? protected or private member?
cin.ignore();
return 0;
}
теперь, когда мы делаем экземпляр class D
, что член будет тогда? частный или защищенный LOL?
Рисунок No2:
что, если мы делаем это так:
class B :
virtual public A // note public this time!
{
};
class C :
virtual protected A // same as before
{
};
Я полагаю, member
будет опубликована в этом втором примере ISN это?
+1 для соответствующей и точечной цитаты источника. –
@ Kerrek: Спасибо за редактирование, я не помню, как легко вставлять код в цитату. :) – Xeo
Это я сказал им мой предыдущий комментарий: D public имеет больше «власти», а затем частный или защищенный. хороший пример, спасибо. но это не относится к комбинации PRIVATE/PROTECTED! список наследования имеет больше мощности в этом случае :) круто. – codekiddy