производный класс c ++ с приватным спецификатором доступа

У меня есть производный класс (класс B) из базового класса (класс A). Класс A имеет защищенную виртуальную функцию foo (), которую я хочу переопределить и использовать в качестве частного в производном классе.

Class A{
protected:
virtual void foo() = 0;
}

Мне интересно ли следующее

Class B: public Class A
private:
virtual void foo();

а также

Class B: private Class A
private:
virtual void foo();

подобные.

1

Решение

Они не то же самое. В первом примере B являетсяAво втором это не так. Так что в первом случае вы можете иметь такой код, как

void foo(const A& a);

который принимает A а также B в качестве аргументов. С частным наследством вы не могли этого сделать. Например,

A a;
B b;
foo(a); // OK with private and public inheritance
foo(b); // OK only with public inheritance, i.e. B is an A.
1

Другие решения

Нет, ваши два случая не совпадают.

Во втором случае class B не может быть приведен к class Aпотому что частный базовый класс скрыт. в этом аспекте получит такое же поведение, как если бы class A будет членом class B,

0

Нет оба не одинаковые
В публичном наследовании класса A функция foo () будет защищенным членом класса B
В частном наследовании класс B может получить доступ только к открытым членам класса A, поэтому в классе B. не будет представлено ни одного foo () класса A.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector