Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подскажите ,как осуществить поиск максимального элемента массива http://www.cyberforum.ru/cpp-beginners/thread1003084.html
Как считать информацию с файла? что тут не так? Что надо писать в текстовом документе? #include <iostream> #include <conio.h> #include <fstream> using namespace std; int main()
C++ Форматированный вывод с использованием printf() Как сделать, чтобы printf("%3.3f", peremennaya); выводила именно 3.3 знака, даже если число хранимой в этой переменной такого количества знаков не имеет? Гугл мне не помогает( http://www.cyberforum.ru/cpp-beginners/thread1003071.html
Задана матрицы целых чисел. Удалить из неё К-ю строку C++
Доброго времени суток. Помогите разобраться. Заранее спасибо.
C++ с++ как открыть exe файл в программе ?
как сделать ? может кто-то знает?
C++ матрица по спирали http://www.cyberforum.ru/cpp-beginners/thread1003040.html
есть матрица с (0,0) элемента по спирали , а нужно середины for (int j = 0, m = a; j <= m; j ++, m --){ for (int i = j; i < m; i ++){ Console.Write("{0} ", myArr); } for (int i = j + 1; i < m; i ++){ Console.Write("{0} ", myArr); } for (int i = j + 1; i < m;...
C++ Проверить пересечение прямоугольников как проверить пересекаются ли прямоугольники? Для ясности скинул весь свой класс. Прямоугольники задаются только 2-мя вершинами, рисую через dc.Rect(), поэтому проверят параллельны ли они к горизонтали не нужно. Для ясности скинул весь свой класс Rect. Благодарю. class Point { private: int itX,itY; public: inline void SetX(int x) { itX = x; } inline void SetY(int y) { itY = y; }... подробнее

Показать сообщение отдельно
Katran1990
 Аватар для Katran1990
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 10
10.11.2013, 02:51     Перегрузка операторов С++
Всем привет!
Помогите пожалуйста разобраться в коде. Я сооооовсем начинающий и сейчас учу с++ по Шилдту и Либерти. Вопрос связан с простейшей программой перегрузки операторов. Программа следующая:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "stdafx.h"
#include "iostream"
using namespace std;
 
class SimpleCircle
{
public:
    SimpleCircle();
    SimpleCircle(int);
    SimpleCircle(const SimpleCircle &);
    ~SimpleCircle();
 
    int GetRadius()const;
    void SetRadius(int);
 
    const SimpleCircle & operator++();
    const SimpleCircle operator++(int);
    SimpleCircle & operator=(const SimpleCircle &);
 
private:
    int *itsRadius;
};
 
SimpleCircle::SimpleCircle()
{itsRadius=new int(1);}
 
SimpleCircle::SimpleCircle(int radius)
{itsRadius=new int(radius);}
 
SimpleCircle::SimpleCircle(const SimpleCircle & crcl)
{int val=crcl.GetRadius();
itsRadius=new int(val);}
 
SimpleCircle::~SimpleCircle()
{delete itsRadius;}
 
int SimpleCircle::GetRadius() const
{return *itsRadius;}
 
const SimpleCircle & SimpleCircle::operator++()
{++(*itsRadius);
return *this;}
 
const SimpleCircle SimpleCircle::operator ++(int)
{SimpleCircle temp(*this);
++(*itsRadius);
return temp;}
 
SimpleCircle & SimpleCircle::operator =(const SimpleCircle & crcl)
{if(this==&crcl)
return *this;
*itsRadius=crcl.GetRadius();
return*this;}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SimpleCircle CircleOne, CircleTwo(9);
    cout<<"CircleOne: "<<CircleOne.GetRadius()<<endl;
    cout<<"CircleTwo: "<<CircleTwo.GetRadius()<<endl;
    ++CircleOne;
    CircleTwo++;
    cout<<"CircleOne: "<<CircleOne.GetRadius()<<endl;
    cout<<"CircleTwo: "<<CircleTwo.GetRadius()<<endl;
    CircleOne=CircleTwo;
    cout<<"CircleOne: "<<CircleOne.GetRadius()<<endl;
    cout<<"CircleTwo: "<<CircleTwo.GetRadius()<<endl;
    
return 0;
}
Результат выполнения:
Код
CircleOne: 1
CircleTwo: 9
CircleOne: 2
CircleTwo: 10
CircleOne: 10
CircleTwo: 10
То есть все работает правильно.
В данной программе не могу понять для какой цели служит этот конструктор:
C++
1
2
3
SimpleCircle::SimpleCircle(const SimpleCircle & crcl)
{int val=crcl.GetRadius();
itsRadius=new int(val);}
Как я понимаю он нужен для работы оператора присваивания, но не понимаю для чего? Вижу что принимает, что делает, но ума не приложу как он тут клеится к остальному коду.
Если не сложно объясните пожалуйста. Третий день бьюсь. Без понимания решения этой задачи не смогу учить дальше.
Заранее всем огромное спасибо!)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru