Re[22]: Суть полимор
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.11.04 07:07
Оценка: -2
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Интересно... А в чем, по-твоему, большее совершенство, скажем, C++ по сравнению c С с точки зрения инкапсуляции?


Она в нем есть.

ПК>Можно примерчик?


С++:
struct A
{
private:
    int _val;

public:
    int getVal() { return _val; }

    void setVal(int val)
    {
        if (val < 0)
            throw "требования инкапсуляции не допускают установку "
                "отрицальтного значения свойству Val.";
                
        _val = val;
    }
};

void main()
{
    A a;
    a.setVal(123);  // OK
    a.setVal(-123); // Облом в рантайме.
    a._val = -123;  // Облом во время компиляции.
}


С:
struct A
{
    int _val;
};

void mian()
{
    A a;
    a._val = -123;  // Нарушение принципов инкапсуляции. Подразумевается что A::_val не может содержать отрицальное значение.
}


Не думаю, что этот пример был действительно нужен. Но чтобы ты в очередной раз не сказал, что я отказывюсь давать "подтвреждения своим утвреждениям" я его дал, затратив при этом немалое время на набивку соврешенно никчемного кода. В предь, уж извини я сразу буду посылать куда подальше, когда ты ты будешь мнея принуждать давать подтверждение совершенно очевидным вещам. Даговорились?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.