#1 30.01.07 11:47
[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
#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

