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

перегрузка операций основных типов - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.03.2013, 00:22     перегрузка операций основных типов #1
Здорова!
Опять ничо не получается.
Пытаюсь разобраться с перегрузкой операций возьмем класс int
от я записал допустим
int a=4;
да все вроде работает как нужно и в а унас появилась 4, но это считается короткая форма записи
на самом деле вызывается функция
int& operator=(число наверно или инт хз);
Ничо не пойму пытаюсь записать в полной записи через operator=. Пишу следующее:
int a.operator=(4);
и о боже ошибка? Шо за фигня? Какая перегруженная функция вызывается при int a=4;
Как записать полную запись?
Просветите новичка!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
14.03.2013, 00:36     перегрузка операций основных типов #2
я конечно не спец в с++ но, вряд ли такая запись свойственна для примитивов.
если хотите потренироваться в перегрузке операторов пишите свой класс и там перегружайте.

Добавлено через 9 минут
Вот пример с классом string тут работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
using namespace std;
 
int main ( ){
 
    string s;
    s.operator =("Hello world");
    cout<<s<<endl;
 
    return 0;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.03.2013, 00:40     перегрузка операций основных типов #3
int это не класс
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.03.2013, 00:41  [ТС]     перегрузка операций основных типов #4
Цитата Сообщение от egor2116 Посмотреть сообщение
я конечно не спец в с++ но, вряд ли такая запись свойственна для примитивов.
если хотите потренироваться в перегрузке операторов пишите свой класс и там перегружайте.
Я тоже не спец, но когда я создаю тип например S и объявляю
S a,b,c;
и делаю вызов:

a.operator+(b); или a+b;

у меня вызывается функция S operator+(const S&);

Так почему же при вызове
int a=1; int b=4; int c;
c=a.operator+(b);

у меня вылазит ошибка?
При c=a+b ошибки нету. Как то не ясно чо за фигня.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
14.03.2013, 00:44     перегрузка операций основных типов #5
Потому что сложение чисел типа int — это примитивная операция. Для неё нет метода. И для встроенных типов (вроде int) нельзя создавать (перегруженные) методы.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.03.2013, 00:44  [ТС]     перегрузка операций основных типов #6
Цитата Сообщение от Jupiter Посмотреть сообщение
int это не класс
Как это не класс? int, double, string, char, и вся фигня это ж вроде как типы, а типы и классы это в С++ это одно и тоже. Создал свой класс, считай, что создается новый тип, да у них помоему если не ошибаюсь, то тоже происходит перегрузка операций.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
14.03.2013, 00:45     перегрузка операций основных типов #7
я конечно не спец в с++ но, вряд ли такая запись свойственна для примитивов.
если хотите потренироваться в перегрузке операторов пишите свой класс и там перегружайте.
Прочитайте еще раз вторую часть первой строки.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.03.2013, 00:46  [ТС]     перегрузка операций основных типов #8
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Потому что сложение чисел типа int — это примитивная операция. Для неё нет метода. И для встроенных типов (вроде int) нельзя создавать (перегруженные) методы.
Так это ж не создание это просто вызов функций, как бы полная форма записи. Так, что для встроенных можно токо коротко записывать?

Ладно будем считать, что int, double, char это как бы встроенные классы, а string это как бы не встроенные.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
14.03.2013, 00:48     перегрузка операций основных типов #9
Видимо да
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
14.03.2013, 00:49  [ТС]     перегрузка операций основных типов #10
Цитата Сообщение от egor2116 Посмотреть сообщение
Прочитайте еще раз вторую часть первой строки.
Да работает, токо када свой создаешь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2013, 00:51     перегрузка операций основных типов
Еще ссылки по теме:

C++ перегрузка операций
Программа основных операций над матрицами C++
C++ Перегрузка операций

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

Или воспользуйтесь поиском по форуму:
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
14.03.2013, 00:51     перегрузка операций основных типов #11
Это логично, в системе должны быть примитивные типы с которых все начинается.
Yandex
Объявления
14.03.2013, 00:51     перегрузка операций основных типов
Ответ Создать тему
Опции темы

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