Оператор присваивания

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Lotles
Сообщения: 59
Зарегистрирован: 03 июл 2010, 12:42

azrael писал(а):Объект у вас тут уже создан - это объект String. ptr - это поле этого объекта, оно у каждого экземпляра класса String свое. Любой нестатический метод класса (cpy, например) имеет скрытый первый параметр - указатель на объект, на котором надо вызвать метод. По этому указателю и совершаются все действия над объектом, в частности, изменение значений его полей. Т.е. когда вы делаете "ptr = " внутри объекта класса, на самом деле происходит "this->ptr = ", где this - указатель на объект класса String, в котором производятся все действия в методе.

Наверное, немного сумбурно объяснил :)

Нормально !
Еще интересно почему деструктор вызывается 11 раз, я только 8 раз насчитал

Код: Выделить всё

int main() {
    String a, b, c;
    a = "I ";                 1-ый
    b = "am ";              2-ой
    c = "so ";                3-ий
    String d = a + b + c;  4 -7 ый          
    cout << d;                      8-ой
    cout << endl;
    return 0;
}
где еще ?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Читателям: продолжение обсуждения расположено здесь.
Автору: зачем была создана новая тема, я так и не понял.

P.S. Тема закрыта. Все последующие комментарии в теме, на которую предоставлена ссылка.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Закрыто