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() ...};
Поздрави!