cpp_delegate - 8BitsCoding/RobotMentor GitHub Wiki

Delegate

κΈ°λŠ₯의 κ΅¬ν˜„μ„ μœ„μž„ν•˜λ‹€.

μ½œλ°±ν•¨μˆ˜μ •λ„λΌ μƒκ°ν•˜λ©΄ λ˜κ² λ‹€. 말둜 μ„€λͺ…은 μ—­μ‹œ νž˜λ“œλ‹ˆ μ•„λž˜ μ½”λ“œλ₯Ό ν™•μΈν•˜μž.

#include <iostream>

using namespace std;

class Animal;

// Delegate κ΅¬ν˜„
class AnimalDelegate {
public :
    virtual void onSound(Animal* pSender) = 0;
    virtual void onWalk(Animal* pSender) = 0;
};

class Animal {
private :
    AnimalDelegate* delegate;

public :
    Animal() {
        this->delegate = NULL;
    }

    void setDelegate(AnimalDelegate* delegate) {
        this->delegate = delegate;
    }

    void sound() {
        if(this->delegate) {
            this->delegate->onSound(this);
        }
    }

    void walk() {
        if(this->delegate) {
            this->delegate->onWalk(this);
        }
    }
}

// 개 delegate κ΅¬ν˜„
class Dog : public Animal, public AnimalDelegate {
public:
    Dog() {
        this->setDelegate(this);
    }

    void onSound(Animal* pSender) {
        cout << "Dog 멍멍" << endl;
    }

    void onWalk(Animal* pSender) {
        cout << "Dog κ°€ κ±·λŠ”λ‹€ " endl;
    }
};

void main() {
    Dog dog;

    dog.sound();
    dog.walk();
}

μ°Έκ³ μ‚¬μ΄νŠΈ(30)
μ°Έκ³ μ‚¬μ΄νŠΈ(99)

⚠️ **GitHub.com Fallback** ⚠️