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

Преобразование типа аргумента в тип класса и дружественная функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Графы http://www.cyberforum.ru/cpp-beginners/thread203783.html
Задача: По системе односторонних дорог определить, есть ли в ней город, из которого можно добраться до каждого из остальных городов, проезжая не более 100 км. Я думаю, что тут надо...
C++ Потоки C++ Есть задача: 1) Смоделировать работу читателей и писателей на основе двух потоков. 2) Писатель генерирует структуру данных описывающую студента (ФИО, Возраст, Пол,…). 3) Читатель считывает... http://www.cyberforum.ru/cpp-beginners/thread203782.html
Как изменить размер шара во время движения? C++
Подскажите, плз, как изменить размер шара во время движения? Чтобы через какое-то время увеличился радиус. изначально мини-прожка такая : #include "TXLib.h" void DrawCircle (int x, int y, int...
C++ Интересная работа !!!!
задумка работы зделать игрушку ТИР ну я думаю вы все понимаете что ето и как в нее играть но вот делал ее делал и столкнулся с проблемой даже с несколькими сначала делал на с теперь делаю на...
C++ Определить количество классов эквивалентных строк данной прямоугольной матрицы http://www.cyberforum.ru/cpp-beginners/thread203772.html
Определить количество классов эквивалентных строк данной прямоугольной матрицы. Строки считать эквивалентными, если равны суммы их элементов.
C++ массив помогите символьный массив состоящий из чисел , перевести в целочисленный массив и вывсети на экран , на си Добавлено через 9 минут помогите символьный массив состоящий из чисел , перевести в... подробнее

Показать сообщение отдельно
jultomten
Сообщений: n/a

Преобразование типа аргумента в тип класса и дружественная функция - C++

05.12.2010, 16:20. Просмотров 445. Ответов 1
Метки (Все метки)

Добрый день.

Есть код:
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
class Cls
{
private:
    double x;
public:
    Cls();
    Cls(double);
    void Show();
    friend Cls operator+(Cls , Cls);
};
 
Cls::Cls()
{}
Cls::Cls(double a)
{
    cout << "constructor" << endl;
    x = a;
}
void Cls::Show()
{
    cout << x << endl;
}
Cls operator+(Cls a, Cls b)
{
    cout << "operator+" << endl;
    Cls tmp;
    tmp.x = a.x + b.x;
    return tmp;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    double z = 3.33;
    Cls A = z;
    A.Show();
    cout << endl;
    A = A + 4.44;
    A.Show();
    cin.get();
    return 0;
}
Результат выполнения кода:
constructor
3.33

constructor
operator+
7.77
Почему во втором случае сначала выводится "constructor", а не "operator+"? Разве не происходит сначала вызов дружественной функции для сложения объекта класса и числа, а только потом вызов конструктора для присвоения значения объекту класса, ведь тогда получается наоборот должно быть? Объясните, плиз, что на самом деле происходит.

Добавлено через 1 час 45 минут
ап ап ап
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru