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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как грамотно подключать заголовочные файлы? http://www.cyberforum.ru/cpp-beginners/thread1237648.html
Как грамотно подключать заголовочные файлы? Можно ли их все собрать в stdafx.h а потом инклюдить там где они мне нужны? А то сейчас получается, в одном .h объявил переменную с типом класса который описан в другом .h и посыпались ошибки.
C++ Алгоритм добавления элемента в сортированный список Нужно придумать алгоритм для добавления элемента в сортированный список(STL list<char>), то есть этот алгоритм должен сравнивать введенный элемент с уже имеющимися элементами в списке и встать в нужное место. Я думал организовать алгоритм с помощью бинарного поиска, но возникает вопрос, как определить итератор на центр списка. http://www.cyberforum.ru/cpp-beginners/thread1237642.html
Получение данных из файла C++
Задача№6. Постройте программу, которая отслеживает пожертвования в Общество Защиты Влиятельных Лиц. Она должна запрашивать у пользователя количество меценатов, а затем приглашать вводить их имена и суммы пожертвований от каждого. Информация должна сохраняться в динамически выделяемом массиве структур. Каждая структура должна иметь два члена: символьный массив (или объект string) для хранения...
C++ Обход графа в ширину - Breadth First Search (BFS)
Всем привет! Я не понимаю алгоритм обхода в глубину BFS:( Кто может помощь?
C++ Передача препроцессорных определений в командной строке http://www.cyberforum.ru/cpp-beginners/thread1237632.html
Здравствуйте! Подскажите пожалуйста, как передать препроцессорное определение через командную строку. То есть пишется код, который проверяет определение DEBUG (#ifndef DEBUG) и если оно определено, то вставляются, допустим, инварианты. Хочу, научиться передавать определение DEBUG не вручную определяя, а через консоль. Есть такие методы? (использую MVS 2012)
C++ Чем отличаются знаковые и беззнаковые типы? Здравствуйте. Все не могу понять, чем отличаются знаковые и беззнаковые типы? И для каких типов они есть? short int это тоже самое, что и unsigned int? подробнее

Показать сообщение отдельно
GetHelp
-8 / 60 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
02.08.2014, 22:53  [ТС]     Перегрузка оператора +
Цитата Сообщение от DrOffset Посмотреть сообщение
GetHelp, миллион советов уже тебе дали по конкретике, не буду повторяться.
Скажу одно, основная и главная проблема твоя в подходе к написанию кода. То, что ошибки ты сейчас самостоятельно или с помощью форумчан, исправишь - это понятно и хорошо. Но вот самый главный шаг нужно с делать в сторону того, чтобы ошибок было изначально меньше.
Начни с разделения ответственности. У тебя есть задача, задача делится на составные части. Каждую составную часть нужно описать отдельно и отдельно оттестировать, а потом собирать все воедино как конструктор. Т.е., вот скажем функция выделения памяти, она у тебя, что называется, прошита во все методы, где используется. каждый раз нужно высчитывать размер умножая на sizeof(char), каждый раз заботиться о проверке, каждый раз смотреть, чтобы указатель не попортился и т.д. Где-то можно что-то и забыть или не так посчитать. В нормальных контейнерах функцию выделения памяти обычно абстрагируют во внутреннюю функцию allocate, а освобождение, соответственно, в deallocate. Инициализация - это тоже отдельная операция. Копирование - тоже. И т.д. Принцип divide et impera очень древний и очень действенный. Не стоит пренебрегать им.
не понимаю что конкретно вы имеете ввиду под функциями выделения и освобождения памяти... что толку если я напишу скажем
C++
1
2
3
4
char* allocate(size_t size)
{
return (char*) calloc(size, sizeof(char));
}
что толку? чуть меньше писать при вызове? про остальное тоже самое...

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
когда запишешь
String str = String("text") + "data";
Вызовется - КП (коснтруктор преобразования) String("text")
Сработает перегруженный оператор + Strig + char
Сработает КК для str
Если бы стоял оператор присваивания String operator = String мы бы дёрнули делитом битый поинтер text
Касательно кажущегося ликиджа
str = str + "text" его не будет т.к отработает дефолтный String operator = String который по сути присвоит классу самого себя
не понимаю о чем вы вы понимаете что КП не возвращает значения? конструкторы вообще не могут возвращать значение ! что именно вы пытаетесь складывать? в конечно счете вы просто присваиваете str = "data"

Добавлено через 3 минуты
т.е. КП вызванный из неоткуда ничего и не дает, вы же не вызываете его от переменной...
 
Текущее время: 00:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru