Re: В оличие указателя от референса?
От: Death_Mokar Украина  
Дата: 11.08.05 09:19
Оценка:
Суть заключается в техниках программирования, в которых применяются указатели и ссылки. Например, при перегрузке оператора "+" для Вашего класса, Вы не сможете воспользоваться указателями не потеряв при этом простую семантику операции сложения. Выглядит это так:

1. используем ссылки:
//...
class A;
A operator+ (const A& ra, const A& rb){/*...*/}

void f(A a, A b)
{
A c;
c=a+b; //верно, a и b передаются по ссылке в operator+
}
//...

2. используем указатели:
//...
class A;
A operator+ (A* pa, A* pb){/*...*/}

void f(A a, A b)
{
A c;
c=a+b; //не верно, правильно будет с = operator+(&a, &b) или c = &a + &b
}
//...

Ясно, что в этих примерах аргументы не передаются по значению из соображений эффективности (копирование больших объектов).

Более того, если мы захотим написать что-то вроде a+b+c, то... в случае с указателями запись приобретает еще более "кривой" вид:
//...
&( &a + &b ) + &c;
//...

зато при использовании ссылок мы смело можем написать a+b+c.

p.s. к нижним веткам: ссылка в отличие от указателя всегда "валидна", все примеры "не валидных" ссылок являются элементарнейшим хаком (зачем в таком случае Вам вообще нужен С++ ??? Правильно, не нужен ).

p.p.s. а все что я написал есть в каждом "толковом" букваре С++, поэтому пинайте авторов .
улыбок тебе дед мокар
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.