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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Substring для textbox http://www.cyberforum.ru/cpp-beginners/thread700332.html
Вот в чем проблема: Надо взять подстроку из "переменной" textBox1->Text Но, никакие попытки и поиски решения в интернете по SubString из textbox, нету! Vs2008
C++ Ошибка "cannot convert" Дано два массива 3х2 и 1х3 double W1={{ 0.1, 0.1},{-0.2,-0.1},{ 0.1, 0.3}}; double W2={0.2,0.2,0.3}; Вызываю ф-цию solo два раза solo(x1,x2,2,3,W1); solo(x2,x3,1,3,W2); http://www.cyberforum.ru/cpp-beginners/thread700330.html
Удаление символов строки, используя указатель C++
Здравствуйте, помогите, пожалуйста, дописать код. Заранее спасибо за помощь. Задание: 1. Ввести строку в символьный массив размером 60. 2. Выделить блок памяти, достаточный для размещения строки. 3. Переписать введённую строку во вновь выделенный блок памяти. 4. Используя указатель (-и), удалить из строки первые N символов. Значение N вводится пользователем. Проблема возникает на 4 этапе....
C++ Для тех кто делает оконные приложения в Builder C++ Borland
Ребята вот подскажите..если я создал приложение , оно работает , все норм, но вот я хочу что бы там было несколько форм. как подключить к одной формк кнопку перехода на другую... и что бы вторая форма была с другим меню.... подскажите пожалуйста!!!!!
C++ Вычисление значения функции, заданной на промежутках http://www.cyberforum.ru/cpp-beginners/thread700309.html
Задание: Для Х, принимающего значения от XN=-30 до XK=50 с шагом ∆X=0,6, определить Y. При условии: Y= log3x, если x>6,8 Y= x-32, если 0<=x<=6,8 Y= sin(x), если x<0. Результат выдать в форме таблицы значений X иY. Проверьте, пожалуйста, решение, которое я здесь приведу. Исправьте, если что не так или предложите свой вариант, если считаете, что ваш вариант лучше. Только не судите строго, я...
C++ Бинарное слияние Не получается реализовать алгоритм. Хелп плз. http://img246.imageshack.us/img246/6600/binslimf5.jpg Вот что у меня получается. #include<iostream> #include<cmath> #include<time.h> int binarysearch(int mass,int nachalo, int konec, int x); using namespace std; подробнее

Показать сообщение отдельно
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.11.2012, 17:38
Можно представить себе, что summa и a[5] - это переменные какого-то типа, допустим, int. Здесь в цикле происходит суммирование всех элементов массива:
C++
1
summa += a[i];
А если эти переменные другого, нестандартного (как здесь) типа, то как объяснить компилятору, что нужно именно суммировать и вообще что суммировать? Нужно перегрузить этот оператор "+=". По сути перегрузкой мы говорим компилятору, когда он дошел до этой строчки, что надо зайти в этот самый блок кода (A A::operator +=(A a)) и посмотреть, что там с чем складывается. А там как раз складываются: x += a.x, и тип у них известный (int).
Что касается *this:
A A::operator +=(A a) - здесь первая A - это тип возвращаемого этой функцией значения. Она имеет типа объекта. А чтобы правильно возвратить, мы и выдаем указатель на this (фактически, напрямую, без создания дополнительных объектов). Есть еще один вариант:
C++
1
2
3
4
 A A::operator +=(A a) //перевантажена функція
{ 
  return A(this->x += a.x);
}
Здесь создается копия объекта, но без имени, т.к. она нигде не будет использоваться кроме как для передачи значения. Правда для такого подхода нужно отдельный конструктор с одним параметром создавать.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru