Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116

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

02.08.2014, 17:56. Показов 8039. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не получается в своем классе перегрузить оператор + пишет "error C2804: бинарный "operator +" имеет слишком много параметров", действительно задал 2 параметра, но как еще то? ведь + и подразумевает собой сложение 2х значений...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.08.2014, 17:56
Ответы с готовыми решениями:

Перегрузка оператора ^
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования матрицы. Есть класс матрицы: template <class T> ...

Перегрузка оператора +
Написал для перегрузки оператора + class BoolMatrix { private: int feet; public: BoolMatrix(int f): feet(f) {} ...

перегрузка оператора!
Помогите сложить диагонали , при помоши перегрузки оператора+, чтобы можно было написать в maine: c1+c2+c3.заранее спасибо! ...

83
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GetHelp Посмотреть сообщение
Необработанное исключение по адресу 0x77ED40E3 (msvcr120d.dll) в string.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC."
где то память не выделилась
указатель есть но указывает в космос
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:29  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
А зачем ты здесь вызываешь метод???
можно так
C++
1
size = str.size;
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
strcpy(ptr, str.ptr);
ну может потому что у меня size и ptr не в protected секции... хотя возможно действительно есть смысл их туда перенести...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:32
Цитата Сообщение от GetHelp Посмотреть сообщение
ну может потому что у меня size и ptr не в protected секции...
класс обращается сам к себе
может лезть куда угодно, даже к приватным
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.08.2014, 21:32
Цитата Сообщение от GetHelp Посмотреть сообщение
у меня size и ptr не в protected секции
protected - имеет смысл в случае иерархии. Тут класс один -> нет повода для протектеда совсем.
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:34  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
класс обращается сам к себе
может лезть куда угодно, даже к приватным
str передана в параметре, класс обращается не сам к себе а к другому объекту того же класса

Добавлено через 54 секунды
Цитата Сообщение от 0x10 Посмотреть сообщение
protected - имеет смысл в случае иерархии. Тут класс один -> нет повода для протектеда совсем.
если не будет protected то как ты будешь к str обращаться? нету там доступа к private членам...
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.08.2014, 21:35
Цитата Сообщение от GetHelp Посмотреть сообщение
к другому объекту того же класса
Достаточное условие для доступа к приватной части. Класс знает свое внутреннее устройство -> знает внутренности других объектов своего же типа.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:35
Цитата Сообщение от GetHelp Посмотреть сообщение
выкидывает "Необработанное исключение по адресу 0x77ED40E3 (msvcr120d.dll) в string.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC." на строке 74
судя по Дллке ты пишешь в Вижуале
тогда при ошибке нажми продолжить
выскочит еще раз табличка, нажми остановить
тебя кинет в отладчик
там в окне стека можешь проследить кто бяку сделал
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:37  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Достаточное условие для доступа к приватной части. Класс знает свое внутреннее устройство -> знает внутренности других объектов своего же типа.
аа все да был не прав, действительно доступ есть...

Добавлено через 54 секунды
ValeryS, она просто продолжает выскакивать
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:38
Цитата Сообщение от GetHelp Посмотреть сообщение
str передана в параметре, класс обращается не сам к себе а к другому объекту того же класса
а теперь переведи
класс обращается к объекту
класс это описание
объект класса обращается к обращается к другому объекту того же класса
класс обращается к к классу
объекты разные описание одно
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:38  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
а теперь переведи
класс обращается к объекту
класс это описание
объект класса обращается к обращается к другому объекту того же класса
класс обращается к к классу
объекты разные описание одно
ага ок уже понял...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:39
Цитата Сообщение от GetHelp Посмотреть сообщение
ValeryS, она просто продолжает выскакивать
вот когда продолжает выскакивать нажми остановить, или как там называется
у каждой версии свои имена
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:43  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
вот когда продолжает выскакивать нажми остановить, или как там называется
нету такого...
Миниатюры
Перегрузка оператора +  
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:48
тогда "Прервать"
но только на второй раз
иначе программа просто перестанет работать
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:50  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
тогда "Прервать"
но только на второй раз
иначе программа просто перестанет работать
так и есть... как не колдуй просто окошко с исключением закрывается и программа стоит...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
02.08.2014, 21:51
GetHelp, вот код на быструю руку, я не стал править ваш класс, а написал то что "must have" в классе строка http://codepad.org/tyByCrJp
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
#include <iostream>
using namespace std;
 
class String
{
protected :
    char * text;
    long   size;
public:
    String(){
        text = 0;
        size = 0; 
    }
    String(const char * str = 0) {
        if( str )
        {
            size = strlen(str);
            text = new char[1 + size];
            size = sprintf(text, "%s", str);
            text[size] = 0;
        }
        else
        {
            text = 0;
            size = 0;
        }
    }
    String(const String &pCopy){
        size = pCopy.size;
        text = new char[1 + size];
        size = sprintf(text, "%s", pCopy.text);
        text[size] = 0;
    }
    String operator + (const char * str) {
        char * buf = text;
        size= strlen(str);
        text = new char[1 + size];
        if( buf )
        size = sprintf(text, "%s%s",buf, str);
        else    
        size = sprintf(text, "%s", str);
        text[size] = 0;
        return *this;
    }
    String operator + (const String &pCopy){
        return operator + (pCopy.text);
    }
    char * get_text(){return text;}
    long   get_size(){return size;}
};
 
int main(){
    String str = "test";
    cout<<str.get_text()<<endl;
    str =  str + "data";
    cout<<str.get_text()<<endl;
    str = String("next") + "test";
    cout<<str.get_text()<<endl;
    return 0;
}
Output:
test
testdata
nexttest
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:51  [ТС]
да фиг с ним с отладчиком... врятли я что то найду полезное в ассемблерном коде... тут нужно мой код смотреть, я вот пока не вижу ошибок... может вы увидите...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 21:53
Не надо выделять через calloc/malloc/realloc, а освобождать через delete. Это совершенно разные механизмы.
Выделяешь malloc - освобождай free. Выделяешь new - освобождаешь delete.
2
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 22:00
Цитата Сообщение от Tulosba Посмотреть сообщение
Не надо выделять через calloc/malloc/realloc, а освобождать через delete.
а я этого не заметил
Цитата Сообщение от GetHelp Посмотреть сообщение
да фиг с ним с отладчиком...
ну это ты, сгоряча
Цитата Сообщение от GetHelp Посмотреть сообщение
врятли я что то найду полезное в ассемблерном коде...
там не ассемблерный а вполне себе сишный код, что написал то и высветится
Цитата Сообщение от GetHelp Посмотреть сообщение
просто окошко с исключением закрывается и программа стоит...
покажи как стоит? может ты уже в отладчик залез
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 22:07  [ТС]
-=ЮрА=-, так уже интересно, кое что полезное взял, но не могу протестить, вы забыли дописать перегрузку оператора присваивания на ней у меня как раз сейчас все стопорится... а она точно нужна...
Цитата Сообщение от Tulosba Посмотреть сообщение
Не надо выделять через calloc/malloc/realloc, а освобождать через delete. Это совершенно разные механизмы.
Выделяешь malloc - освобождай free. Выделяешь new - освобождаешь delete.
хз я где то читал вроде что delete вызывает free сама... так что большой разницы наверно нет... но ладно можно и так, просто я переодически путаю си и си++
Цитата Сообщение от ValeryS Посмотреть сообщение
покажи как стоит? может ты уже в отладчик залез
я же показал... так и стоит и никуда не двигается
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:13
Цитата Сообщение от GetHelp Посмотреть сообщение
я где то читал вроде что delete вызывает free сама
То, что происходит за кулисами это уже совсем другая история.
Цитата Сообщение от GetHelp Посмотреть сообщение
просто я переодически путаю си и си++
А вот это уже похоже на правду В плюсах постарайтесь забыть про malloc/free.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2014, 22:13

Перегрузка оператора +
Добрый день)Почему то не работает перегрузка оператора сложения) #include &lt;iostream&gt; #include &lt;string&gt; #include...

Перегрузка оператора
#include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace std; class station { public: ...

Перегрузка оператора new[]
Привет всем, программирую давольно давно, на с++ второй год. Столкнулся с задачей, в которой нужно создать свой класс и корректно в нем...

Перегрузка оператора >
Добрый день! #include &lt;stdio.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream&gt; template &lt;typename T1, typename T2&gt; bool ...

Перегрузка оператора
Имеется код: #include &lt;iostream&gt; class X { public: int a; int b; int operator+(int a) {


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru