Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужен класс 
:(
    Опции темы
catdp
Дата 14.5.2005, 16:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











qwe a,b,c;
a=2;
b=3;
c=a+b;
cout<<c;//5
a=3;
cout<<c;//6

  Вверх
Chaos A.D.
Дата 14.5.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



Код

class qwe;

class qwe_sum
{
    friend class qwe;
    private :
        const qwe *qwe1, *qwe2;

    public :
        qwe_sum( const qwe *q1 = NULL, const qwe *q2 = NULL )
            : qwe1(q1), qwe2(q2) {}
        operator bool( void ) { return qwe1 && qwe2; }
};


class qwe
{
    friend ostream& operator<<( ostream &out, const qwe &q );
    protected :
        int x;
        qwe_sum sum;

        int GetSum( void ) const;

    public :
        qwe( int X = 0 ) : x(X) {}
        qwe( qwe_sum s ) : x(0), sum(s) {}

        qwe& operator=( int X ) { x = X; return *this; }
        qwe& operator=( qwe_sum s ) { sum = s; return *this; }

        qwe_sum operator+( const qwe &q )
        { return qwe_sum(this, &q); }

        qwe_sum GetPSum( void ) { return sum; }
};

int qwe::GetSum( void ) const
{
    return ( sum ) ? sum.qwe1->GetSum() + sum.qwe2->GetSum() : x;
};

ostream& operator<<( ostream &out, const qwe &q )
{
    return out << q.GetSum();
}


qwe_sum передается по значению, чтобы не допустить утечки памяти. Это требует копирования двух указателей. Кстати, так тоже работает:
qwe a1 = 5;
qwe b1 = 3;
qwe c1 = a1 + b1;

qwe a2 = 3;
qwe b2 = 8;
qwe c2 = a2 + b2;

qwe d = c1 + c2;
cout << d << endl;

Сдесь d тоже зависит от a1, b1 и других переменных, которые вроде ни причем.
Не знаю, для чего такое могло понравиться... Но вообще - очень странная просьба. Я бы не стал такое внедрять в реальной программе
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1989 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.