Официальный сайт студ.городка НГТУ
Программирование и БД » [C++] перегрузка operator= для стандартного типа данных 

#1  30.01.07 11:47

asp
Профиль

[C++] перегрузка operator= для стандартного типа данных

Каким образом перегрузить оператор для своего класса?

Если в моем классе, то

Код: C++:

type A::operator=(type & param){...}

Но это для случая, если объект класса А стоит СПРАВА от знака присваивания:

Код: C++:

int i;
class A n;
...
i = n

А если я хочу перегрузить для случая

Код: C++:

int i;
class A n;
...
n = i

То как должна выглядеть перегрузка?

Offline

#2  30.01.07 12:26

Re: [C++] перегрузка operator= для стандартного типа данных

Чтобы пользоваться конструкцией

asp написал(а):

int i;
class A n;
...
n = i

оператор должен выглядеть примерно так

Код: cpp:

A A::operator= ( const type& param ) {...}


а это ваще не скомпилится никогда

asp написал(а):

int i;
class A n;
...
i = n

невозможно перегрузить операторы встроенных типов.

Исправлено Fatboy (30.01.07 12:30)

Offline

#3  30.01.07 12:40

asp
Профиль

Re: [C++] перегрузка operator= для стандартного типа данных

Fatboy написал(а):

невозможно перегрузить операторы встроенных типов

Да ну? "Не верю!"©

Offline

#4  30.01.07 23:33

Re: [C++] перегрузка operator= для стандартного типа данных

asp написал(а):

Fatboy написал(а):

невозможно перегрузить операторы встроенных типов

Да ну? "Не верю!"©

если присваивание, то можно попытаться переопределить оператор приведения типа:

Код::

operator int()
{
return A.size();
}

если не присваивание, то можно использовать friend методы:

Код::

friend A operator+(int qwe, A &r)
{
A res(r);
res.add(qwe);
return res;
}

что-то примерно так

Offline

#5  31.01.07 19:36

Re: [C++] перегрузка operator= для стандартного типа данных

Укроп написал(а):

оператор присваивания
-

utug написал(а):

то можно попытаться переопределить оператор приведения типа:

или оператор создания копии,

пример newstruct А=B , где B тоже newstruct

или определение конструктора для класса
в общем забыл но как то можно.

хотя тупо = нельзя имхо перегрузить

Это не я бляяя...

Offline

#6  31.01.07 19:41

Re: [C++] перегрузка operator= для стандартного типа данных

Укроп написал(а):

или можно. смотри "приведение  к пользовательскому типу данных"
там можно перегрузить любое присваивание (приведение)
типо
char c=1;
newstruct A;
A=(newstruct)c;
или даже просто
A=c;

оттуда и пляши ) балин забыл а ведь когда то сдавал на отлично )

а еще есть прием

newstruct A=1;
newstruct B=A;
тогда если перегрузить конструтор копирования для  newstruct то все поля B примут соотв значения A (если A{int a; int b}  то и B станет {int B::a=A:a;int B::b=A::b;} чет типо такого) или случится то что ты опишешь в конструторе

Это не я бляяя...

Исправлено Укроп (31.01.07 19:45)

Offline

#7  31.01.07 23:50

Re: [C++] перегрузка operator= для стандартного типа данных

для вот этого:

asp написал(а):

i = n

нужно перегружать приведение типа, а не присваивания...

Offline

#8  01.02.07 01:18

Re: [C++] перегрузка operator= для стандартного типа данных

Укроп написал(а):

видимо я это и имел ввиду )
терминологию растерял за древностию лет

Это не я бляяя...

Offline

#9  01.02.07 01:22

asp
Профиль

Re: [C++] перегрузка operator= для стандартного типа данных

Andron_ написал(а):

нужно перегружать приведение типа

Это должно быть методом моего класса?

Исправлено asp (01.02.07 01:22)

Offline

#10  01.02.07 14:33

Re: [C++] перегрузка operator= для стандартного типа данных

asp, да.
Когда выполняется вот это

asp написал(а):

int i;
class A n;
...
i = n

то происходит преобразование твоего класса к int, ну а потом инт пишется в целую переменную.

Offline

Программирование и БД » [C++] перегрузка operator= для стандартного типа данных 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.041 сек.
Выполнено 14 запросов.