Вопрос: при добавлении элемента в список, должно происходить копирование значения
этого эленента, в данном примере, я не описал для класса MyStruct оператор присваивания,
так каким же образом происходит это присваивание, или функция push_back сохраняет
имено ссылку на объект? На этот факт и навод мысль что при вызове push_back не
происходит вызов конструтора MyStruct.
И еще, если список хранит ссылку, то подобная конструкция не имеет права на жизнь,
т.к. MyStruct s локально выделяется и удаляется, но ЭТО РАБОТАЕТ, ниче не понимаю,
так как же происходит присваивание объекта?
class MyStruct
{
public:
MyStruct()
{
static int mmm = 100;
y = mmm--;
x = mmm--;
}
int x;
int y;
};
void main()
{
list <MyStruct> MyList;
for (int i=0; i<10; i++)
{
MyStruct s;
MyList.push_back( s );
}
list <MyStruct>::iterator MyIterator = MyList.begin();
while (MyIterator != MyList.end())
{
TRACE( "x:%d y:%d\n", (*MyIterator).x, (*MyIterator).y);
MyIterator ++;
}
}
20.10.04 19:39: Перенесено модератором из 'C/C++. Прикладные вопросы' — Павел Кузнецов