Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

декратор

66K
12 июня 2011 года
redwhite
3 / / 15.03.2011
помогите разобраться ка это работает

особенно непонятно про auto_ptr
Ничего интересного на этот счёт я не нагуглил

вот код:

Код:
[HTML][code=php][CODE]#include <iostream>
#include <memory>

class IComponent{
public:
    typedef std::auto_ptr<IComponent> SPtr;
    IComponent* Sptr;
    virtual void operation() = 0;
};

class Component: public IComponent{
public:
    virtual void operation()
    {
        std::cout<<"World!"<<std::endl;
    }
};

class DecoratorOne: public IComponent{
    SPtr _component;

public:
    DecoratorOne(SPtr& component): _component(component) {}

    virtual void operation(){
        std::cout<<", ";
        _component->operation();
    }
};

class DecoratorTwo: public IComponent{
    SPtr _component;

public:
    DecoratorTwo(SPtr& component): _component(component) {}

    virtual void operation(){
        std::cout<<"Hello";
        _component->operation();
    }
};

int main(){

    IComponent::SPtr component(new Component);
   DecoratorTwo obj(IComponent::SPtr(new DecoratorOne(component)));
    obj.operation(); // prints "Hello, World!\n"

    return 0;
}
[/code][/HTML][/CODE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог