Форум программистов, компьютерный форум CyberForum.ru

О виртуальном наследовании - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно прочитать все имена определенной ветки реестра с их значениями http://www.cyberforum.ru/cpp-beginners/thread471442.html
Нужно прочитать все имена определенной ветки реестра с их значениями, при условии что сами имена не известны... Подскажите решение, моно исходником ...
C++ Как узнать, какая кнопка нажималась последней? Как узнать, какая кнопка нажималась последней, не используя функции типа OnButtonDown()? http://www.cyberforum.ru/cpp-beginners/thread471395.html
Получение указателя на данные в векторе C++
есть вектор std::vector<char> vLeftBuf(bs); есть ф-я которая в качестве параметра принимает const char * подскажите пожалуйста как наиболее грамотно передать данные из вектора в эту ф-ю ?
C++ Хочу узнать про функцию InvokeHelper()
Буду благодарен за рассказ или ссылки.
C++ Как в элементе ActiveX Janus GridEX заполнить выпадающие списки? http://www.cyberforum.ru/cpp-beginners/thread471371.html
Как?
C++ Проблемы с экспортируемыми именами. Помогите плз. Дело вот в чём: я в DLL создаю экспортируемую функцию ( например InitLibrary ) если объявить её как extern 'C' то и модуле она будет иметь имя InitLibrary. А вот какое имя у неё будет без extern 'C'?????. Заранее благодарен. подробнее

Показать сообщение отдельно
Вениамин
Сообщений: n/a
06.11.2008, 11:47
Ну да, это я знаю. Если у нас есть следующее:
class A{};
class B : public virtual A {};
class C : public virtual A {};
class D : public B, public C {};
то при создании объекта класса D, будет создан один экземляр класса A, в отличие от не виртуального наследования.
Но вот вопрос: а если к примеру класс C наследует А не виртуально, т.е.
class C : public A {};
Что тогда будет при создании объекта класса D???

Поэтому мне интересно узнать как компилятор все это представляет?
Вот если мы пишем:
class B : public virtual A{};
в объект класса B добавляется какая-то информация размером в 4 байта??? какая? Если в А есть виртуальная функция, то эта информация уже 8 байт???
Вот про те же виртуальные функции: если в классе есть хоть одна виртуальная функция, к объекту класса добавляется 4 байта - указатель на таблицу виртуальных функций - и от сюда уже понятно как раелизуется полиморфизм.
А что значит: class B : public virtual A {}; ???
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru