list в STL
От: Malokhatko  
Дата: 19.10.04 19:08
Оценка:
Вопрос: при добавлении элемента в список, должно происходить копирование значения
этого эленента, в данном примере, я не описал для класса 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++. Прикладные вопросы' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.