C++ Advanced, 09_02_IDs -какво се случва с паметта ако HasId и HasInfo независимо наследяват Company?

и защо не може да се използва пойнтер от тип Company ,  в описания случай, за да се инициализират пойнтери от тип HasInfo и GetId ?

(хипотетично, няма общо със задачата)

Здравейте,

предполагам отговорът е, че наследяващите обекти са с повече обем памет ако имат и те полета  и, ако се пренасочват така пойнтери ще се достъпва и чужда памет, може би? (примерен код по-долу) и ако имаме  масив с такива обекти, с паметта какво ще се случва?

ако се абстрахираме от имената на класовете, защо да не може вместо интерфейси, HasId и HasInfo да наследяват Company?  Предполагам, че пак     HasId* hasId = c;  ще връща id-to  и   HasInfo* hasInfo = c;  ще връща стринг с информацията за компанията,  (c    e пойнтер от тип Company), незнам правилно ли е това?   

class HasId : public Company {  public:
    int id;
    HasId() : Company() {}
    HasId(Company* c) : Company(c->id, c->name, c->employees), id(c->id) {}    и един гетер getId() ...  };


class HasInfo : public Company {
    static std::string NormInfo(Company* c) {   return c->getInfo();  }
public:
    std::string info;
    HasInfo() : Company() {}
    HasInfo(Company* c) : Company(c->id, c->name, c->employees), info(NormInfo(c)) {}    и един гетер getInfo() ...};

 

Поздрави!