Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

20.06.2013, 14:50. Просмотров 513. Ответов 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) у меня возвращает длину строки, не считая нуль-терминатор
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора '+' для char* вне класса (C++):

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

Перегрузка оператора >> для дочернего класса от базового виртуального класса - C++
Доброго вам времени суток! Программирую на С++ не давно, в связи с отсутствием должного времени на поиск ответа в глубинах учебников,...

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

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

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

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

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

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

P.S. ой, немного опоздал)
1
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 15:31  [ТС] #6
ITcrusader, спасибо))
0
20.06.2013, 15:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 15:31
Привет! Вот еще темы с ответами:

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

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

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

Перегрузка оператора == для класса, наследуемого от полиморфного - C++
Добрый день форумчане. Проблема такая: У меня есть класс Man, который имеет виртуальные функции чтения из файла и вывода на консоль. Есть...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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