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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
#1

Перегрузка оператора '+' для char* вне класса - C++

20.06.2013, 14:50. Просмотров 486. Ответов 5
Метки нет (Все метки)

Хочу перегрузить конкатенацию массивов char'ов через операцию '+'.
Не могу понять, возможно ли запустить следующую конструкцию, подправив её конечно же перед этим.
Информация, которая есть в интернете по этому поводу путает, не получается собрать всё в единое целое.
Я представляю себе это как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* operator+ (char* first, char* second)
{
    int len_1 = Lenght (first), len_2 = Lenght (second);
    char* res = new char [len_1 + len_2 + 1]; up++;
    for (int i = 0; i < len_1; i++)
    {
        res [i] = first [i];
    }
    for (int i = 0; i < len_2; i++)
    {
        res [i + len_1] = second [i];
    }
    res [len_1 + len_2] = 0;
    return res;
}
п.с. функция Lenght (char* str) у меня возвращает длину строки, не считая нуль-терминатор
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 14:50     Перегрузка оператора '+' для char* вне класса
Посмотрите здесь:

Перегрузка оператора ввода вне класса - C++
вечер добрый. можно ли так делать? #include &lt;iostream&gt; struct point { int x, y; }; std::istream &amp; operator &gt;&gt;...

Перегрузка оператора для класса - C++
Здравствуйте! Подскажите, пожалуйста, почему так не работает: class ClassA { public: ClassA() { m = 1; ...

Перегрузка оператора -> для шаблонного класса - C++
Здравствуйте! Возникла проблема: не могу додуматься как перегрузить оператор -&gt; так, чтобы он корректно работал. Вот код: template&lt;class...

Перегрузка оператора ( ) для объектов класса - C++
Здравствуйте! перегрузили оператор (). Каким образом компилятор поймет где мы вызываем оператор (), а где , например, конструктор? каким...

Перегрузка оператора- для шаблона класса - C++
Ребят подскажите что не так я делаю или подтолкните в нужное русло =\ З.Ы. Массивы будем рассматривать одинаковой длины. #include...

Перегрузка оператора + для класса Date - C++
Здравствуйте! Как правильно перегрузить оператор +(Date, int) для класса Date, чтобы дата увеличивалась на нужное количество дней? При этом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
20.06.2013, 15:03     Перегрузка оператора '+' для char* вне класса #2
Цитата Сообщение от TamaGOch Посмотреть сообщение
Хочу перегрузить конкатенацию массивов char'ов через операцию '+'.
Для примитивных типов сделать это невозможно(как вы вообще себе это представляете? )
http://www.parashift.com/c++-faq-lit...erloading.html
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
20.06.2013, 15:03     Перегрузка оператора '+' для char* вне класса #3
TamaGOch, перегрузка операторов допустима только если хотя бы один из операндов - тип определенный пользователем. Для встроенных типов перегрузка недоступна.
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 15:05  [ТС]     Перегрузка оператора '+' для char* вне класса #4
Большое спасибо, буду теперь знать))
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
20.06.2013, 15:06     Перегрузка оператора '+' для char* вне класса #5
TamaGOch, нельзя, старина, переопределять стандартные языковые операторы применительно лишь ко встроенным типам языка. Хотя бы один из параметров должен быть кастомным, чему подтверждение дает компилятор:
error C2803: 'operator +' must have at least one formal parameter of class type

И вот тебе моя мудрость: C++ дает тебе возможность расширять язык, но не переопределять его.

P.S. ой, немного опоздал)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 15:31     Перегрузка оператора '+' для char* вне класса
Еще ссылки по теме:

Перегрузка оператора >> для пользовательского класса String - C++
Объявление класса: class String { public: //constructor String( const char * = NULL ); //default constructor String( const...

Перегрузка оператора равно для класса файла - C++
Доброго времени суток. Помогите разобраться с перегрузкой. Идея в том, чтобы экземпляр класса создавал иллюзию работы с массивом. Т.е. ...

Перегрузка оператора ввода для класса с динамическими данными - C++
Доброго времени суток, помогите пожалуйста разобраться с перегрузкой оператора ввода. Есть такой класс class TR { char* nametr; ...

Перегрузка оператора + для сложения двух экземпляров класса - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace::std; class str_type{ char...

Перегрузка оператора вывода на консоль для шаблонного класса - C++
Следующий код компилируется, но не линкуется: #include &lt;iostream&gt; using namespace std; template &lt;typename T&gt; class A { ...

Перегрузка оператора индексации для класса плохо себя ведёт - C++
Собственно, есть такое дело. #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 15:31  [ТС]     Перегрузка оператора '+' для char* вне класса #6
ITcrusader, спасибо))
Yandex
Объявления
20.06.2013, 15:31     Перегрузка оператора '+' для char* вне класса
Ответ Создать тему
Опции темы

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