Форум программистов, компьютерный форум, киберфорум
Наши страницы

Почему создаются новые объекты? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как нарисовать http://www.cyberforum.ru/cpp-beginners/thread245002.html
Необходимо с помощью кода нарисовать 5 квадратов, расположенные друг за другом (это будут кабинеты), а в каждом квадрате написать допустим номер кабинета или какие процедуры там проводят. Затем около...
C++ Наследование Используя механизм наследования реализовать иерархию: фигура->круг ..........->треугольник ..........->квадрат (все стрелки отходят... http://www.cyberforum.ru/cpp-beginners/thread244999.html
Написать функцию, которая удваивает каждый символ строки C++
Народ,спасайте! Не могу написать программу! Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от...
C++ Шаблонная функция С++
Помогите пожалуйсто понять ошибку Используется шаблонная функция в первом вызове она отображает значение типа int во втором типа double ошибку пишет в 10 строке. Вот такую D:\C++\C++8\4\123.cpp(10)...
C++ Тренировка http://www.cyberforum.ru/cpp-beginners/thread244961.html
Так как я только недавно стал постигать азы с++ мне трудно пока учить синтаксис и тем более все его нюансы. Поэтому я считаю, что постоянные тренировки мне необходимы. Мне нужен такой ресурс на...
C++ Как печатать в cout << " РУССКИМИ БУКВАМИ" Собственно проблема не втом чтобы наляпать в кауте русскими буквами, а чтобы потом эти русские буквы вывело на екран, а не абракадабру..... подробнее

Показать сообщение отдельно
OMGHero
2 / 2 / 0
Регистрация: 16.02.2011
Сообщений: 36

Почему создаются новые объекты? - C++

19.02.2011, 01:03. Просмотров 1282. Ответов 21
Метки (Все метки)

Всем доброго времени суток!
Я не могу понять где создаются новые объекты
Есть у меня простенький класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class data 
{
    char* str;
public:
    data(): str("Hi")
    {}
    data(char* ch): str(ch)
    {}
    void setData(char* ch)
    {
        str = ch;
    }
    void printData()
    {
        cout << str << endl;
    }
    virtual ~data ()
    {
        cout << "data deleted\n";
    }
    data& operator= (data& v)
    {
        str = v.str;
        return *this;
    }
};
Обратите внимение на перегруженный оператор = . Если я возвращаю ссылку на data (как в коде), то при присваивании одго экземпляра класса другому, деструктор ничего не пише мне в консоль. Если я возвращаю просто data
C++
1
2
3
4
5
    data operator= (data& v)
    {
        str = v.str;
        return *this;
    }
то при присваивании в консоле дает о себе знать деструктор.
Зачем компилятор создет еще один экземпляр класса data что бы просто передать *this ?
Если кто понимает, то объясните пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru