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

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

Восстановить пароль Регистрация
 
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 14:50     Перегрузка оператора '+' для char* вне класса #1
Хочу перегрузить конкатенацию массивов 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) у меня возвращает длину строки, не считая нуль-терминатор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
20.06.2013, 15:03     Перегрузка оператора '+' для char* вне класса #2
Цитата Сообщение от TamaGOch Посмотреть сообщение
Хочу перегрузить конкатенацию массивов char'ов через операцию '+'.
Для примитивных типов сделать это невозможно(как вы вообще себе это представляете? )
http://www.parashift.com/c++-faq-lit...erloading.html
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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++
 Аватар для ITcrusader
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. ой, немного опоздал)
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 15:31  [ТС]     Перегрузка оператора '+' для char* вне класса #6
ITcrusader, спасибо))
Yandex
Объявления
20.06.2013, 15:31     Перегрузка оператора '+' для char* вне класса
Ответ Создать тему
Опции темы

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