class Base;
class Lock
{
Lock() {}
friend class Base;
};
class Base : virtual private Lock
{
public:
void foo()
{
std::cout << "Hello world" << std::endl;
}
};
class Derived : public Base
{
};
int main()
{
Derived obj;
obj.foo();
return 0;
}
обьясните пож в чем тут роль virtual ... если наследовать от класса Lock без virtual то код компилируется а так выдает ошибу
note: ‘Derived::Derived()’ is implicitly deleted because the default definition would be ill-formed: class Derived : public Base
При виртуальном наследовании порядок вызова конструкторов нарушается, и конструктор виртуального базового класса Lock
будет вызываться классом Derived
. Однако у класса Derived
нет доступа к приватному конструктору Lock::Lock()
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть две Arduino Mega 2560Как можно загрузить скетч на одну из Arduino, используя USB кабель, ПК и другую Arduino?
Пытаюсь загрузить аудиофайл через api вк (с++, qt)Загрузка на сайт проходит нормально, но при попытке вызвать метод api
Не могу придумать идею для решения данной задачи, ищу помощи