//g++ 7.4.0
#include <iostream>
#include <vector>
using namespace std;
struct A
{
int value;
A()
{
cout << "A created: " << this << endl;
}
~A()
{
cout << "A deleted: " << this << endl;
}
void print()
{
cout << this << endl;
}
};
struct B
{
A item;
B()
{
cout << "B created: " << this << endl;
}
~B()
{
cout << "B deleted: " << this << endl;
}
void print()
{
cout << this << endl;
}
};
int main()
{
vector<B*> items;
{
B item;
item.item.value = 33;
items.push_back(&item);
cout << "1" << endl;
}
cout << "2" << endl;
// вопрос первый
items[0]->print(); // адрес тот же
// вопрос второй
items[0]->item.print(); // такой же адрес как и у родителя
// объект всё ещё работает
cout << items[0]->item.value << endl;
// можно присваивать значения
items[0]->item.value = 44;
// значения присваиваются
cout << items[0]->item.value << endl;
}
Ly9nKysgIDcuNC4wCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKewogICAgaW50IHZhbHVlOwogICAgQSgpCiAgICB7CiAgICAgICAgY291dCA8PCAiQSBjcmVhdGVkOiAiIDw8IHRoaXMgPDwgZW5kbDsKICAgIH0KICAgIAogICAgfkEoKQogICAgewogICAgICAgIGNvdXQgPDwgIkEgZGVsZXRlZDogIiA8PCB0aGlzIDw8IGVuZGw7CiAgICB9CiAgICAKICAgIHZvaWQgcHJpbnQoKQogICAgewogICAgICAgIGNvdXQgPDwgdGhpcyA8PCBlbmRsOwogICAgfQp9OwoKc3RydWN0IEIKewogICAgQSBpdGVtOwogICAgQigpCiAgICB7CiAgICAgICAgY291dCA8PCAiQiBjcmVhdGVkOiAiIDw8IHRoaXMgPDwgZW5kbDsKICAgIH0KICAgIAogICAgfkIoKQogICAgewogICAgICAgIGNvdXQgPDwgIkIgZGVsZXRlZDogIiA8PCB0aGlzIDw8IGVuZGw7CiAgICB9CiAgICAKICAgIHZvaWQgcHJpbnQoKQogICAgewogICAgICAgIGNvdXQgPDwgdGhpcyA8PCBlbmRsOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICB2ZWN0b3I8Qio+IGl0ZW1zOwogICAgewogICAgICAgIEIgaXRlbTsKICAgICAgICBpdGVtLml0ZW0udmFsdWUgPSAzMzsKICAgICAgICBpdGVtcy5wdXNoX2JhY2soJml0ZW0pOwogICAgICAgIGNvdXQgPDwgIjEiIDw8IGVuZGw7CiAgICB9CiAgICBjb3V0IDw8ICIyIiA8PCBlbmRsOwogICAgLy8g0LLQvtC/0YDQvtGBINC/0LXRgNCy0YvQuQogICAgaXRlbXNbMF0tPnByaW50KCk7IC8vINCw0LTRgNC10YEg0YLQvtGCINC20LUKICAgIC8vINCy0L7Qv9GA0L7RgSDQstGC0L7RgNC+0LkKICAgIGl0ZW1zWzBdLT5pdGVtLnByaW50KCk7IC8vINGC0LDQutC+0Lkg0LbQtSDQsNC00YDQtdGBINC60LDQuiDQuCDRgyDRgNC+0LTQuNGC0LXQu9GPCiAgICAvLyDQvtCx0YrQtdC60YIg0LLRgdGRINC10YnRkSDRgNCw0LHQvtGC0LDQtdGCCiAgICBjb3V0IDw8IGl0ZW1zWzBdLT5pdGVtLnZhbHVlIDw8IGVuZGw7CiAgICAvLyDQvNC+0LbQvdC+INC/0YDQuNGB0LLQsNC40LLQsNGC0Ywg0LfQvdCw0YfQtdC90LjRjwogICAgaXRlbXNbMF0tPml0ZW0udmFsdWUgPSA0NDsKICAgIC8vINC30L3QsNGH0LXQvdC40Y8g0L/RgNC40YHQstCw0LjQstCw0Y7RgtGB0Y8KICAgIGNvdXQgPDwgaXRlbXNbMF0tPml0ZW0udmFsdWUgPDwgZW5kbDsKfQ==