cpp_override - 8BitsCoding/RobotMentor GitHub Wiki

cpp_cpp11_override

잘λͺ»λœ 가상 ν•¨μˆ˜ μ˜€λ²„λΌμ΄λ”©μ„ μ–΄λ–»κ²Œ λ§‰μ„κΉŒ?


class Animal{
public:
    virtual void SetWeight(float weight);
};

class Dog : public Animal
{
public:
    virtual void SetWeight(int weight); 
    // float을 int둜 μ˜€νƒ€λ‚΄λŠ” λ°”λžŒμ—
    // virtual void SetWeight(float weight);을 μ˜€λ²„λΌμ΄λ”© ν•˜μ§€ μ•ŠλŠ”λ‹€!
};

class Animal{
public:
    virtual void SetWeight(float weight);
};

class Dog : public Animal
{
public:
    virtual void SetWeight(float weight) override;
    // λΆ€λͺ¨μ˜ ν•¨μˆ˜λ₯Ό 재 μ •μ˜ ν•œλ‹€κ³  λͺ…μ‹œν•΄μ€€λ‹€.
};

Quize

class Animal {
public:
    virtual void SetWeight(float weight);
    void PrintAll();
};

// Main
class Dog : public Animal {
public:
    virutal void SetWeight(float weight) override;
    // Ok

    virutal void SetWeight(int weight) override;
    // 컴파일 μ—λŸ¬ : λΆ€λͺ¨μ— μ—†μŒ

    void PrintAll() override;
    // 컴파일 μ—λŸ¬ : 가상 ν•¨μˆ˜κ°€ μ•„λ‹˜
};

  • 잘λͺ»λœ 가상 ν•¨μˆ˜ μ˜€λ²„λΌμ΄λ”©μ„ λ§‰μœΌλ €λ©΄ overrideν‚€μ›Œλ“œ 적극 μ‚¬μš©
  • λ‹Ήμ—°νžˆ 가상 ν•¨μˆ˜κ°€ μ•„λ‹ˆλ©΄ λͺ»μ“΄λ‹€.
  • 컴파일 도쀑에 κ²€μ‚¬ν•œλ‹€.