Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 virtual and non-virtual instance of a base class  [new]
koleso_cpp
Member

Откуда:
Сообщений: 3
Наткнулся на sample c++ test от Brainbanch
Вопрос был такой:
Which of the following statements is true when a derivation inherits both a virtual and non-virtual instance of a base class?

и правильный ответ
Choice 2:
Each derived class object has a base object from the virtual instance and a base object from non-virtual instance.

Еще варианты:
Choice 1
Each derived class object has base objects only from the non-virtual instance.
Choice 3
Each derived class object has base objects only from the virtual instance.
Choice 4
Each base class object has derived objects only from the virtual instance.
Choice 5
Each base class object has derived objects only from the non-virtual instance.

Объясните пожалуйста, чего хотят они, по-русски?))
Я Майерса и Страуструпа читал по англиски, все вроде понимал,
а тут туплю :(
29 апр 18, 00:12    [21378304]     Ответить | Цитировать Сообщить модератору
 Re: virtual and non-virtual instance of a base class  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6330
koleso_cpp,

ньюансы множественного наследования, с виртуальным базовым классом и с невиртуальным - есть у Страустрапа
29 апр 18, 04:20    [21378352]     Ответить | Цитировать Сообщить модератору
 Re: virtual and non-virtual instance of a base class  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6491
koleso_cpp,

Правильный ответ: множественное наследование не надо использовать (кроме наследования интерфейсов).
29 апр 18, 13:21    [21378659]     Ответить | Цитировать Сообщить модератору
 Re: virtual and non-virtual instance of a base class  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34591
Anatoly Moskovsky
koleso_cpp,

Правильный ответ: множественное наследование не надо использовать (кроме наследования интерфейсов).


Это лишь твоё частное неправильное мнение.
В следующий раз помечай, пожалуйста, тегом #IMHIO
3 май 18, 10:00    [21383517]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: virtual and non-virtual instance of a base class  [new]
tchingiz
Member

Откуда:
Сообщений: 36566
#include <iostream>
   struct   coor  {      // base class
      double  X=1.0;
   };
//   struct bad : coor, coor {}; // error is here

   struct a: virtual coor{};
   struct d: virtual coor{};
//   struct a: coor{};
//   struct d: coor{};

   struct coor3:  a,  d{   // derived class
      double A=2.0; // altitude
   };
   int main(){
     coor3 b ;
    // как выбрать X и X
     printf("\n%.6f, %.6f, %.2f", b.a::X, b.d::X, b.A);
     printf("\nsizes %d/%d", sizeof (coor), sizeof(coor3));
     return 0;
   }


а чем объяснить, что размер coor3 оказался 32?


http://cpp.sh/


 1.000000, 1.000000, 2.00
sizes 8/32
6 май 20, 15:07    [22128209]     Ответить | Цитировать Сообщить модератору
 Re: virtual and non-virtual instance of a base class  [new]
Cerebrum
Member

Откуда: Омикрон Персей 8
Сообщений: 7937


К сообщению приложен файл. Размер - 3Kb
6 май 20, 15:29    [22128231]     Ответить | Цитировать Сообщить модератору
 Re: virtual and non-virtual instance of a base class  [new]
tchingiz
Member

Откуда:
Сообщений: 36566
если virtual убрать, то вообще 24 байта будет, как бы понятно.
6 май 20, 15:45    [22128255]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить