카테고리 없음

[C ++] 상속 된 생성자를 호출하는 C ++

행복을전해요 2021. 2. 21. 06:41

실제로 생성자를 상속 할 수 있습니다. 전부 아니면 아무것도 아니지만 어떤 것을 선택할 수 없습니다. 방법은 다음과 같습니다.

class Sword: public Item {
public:
    using Item::Item;
        ~Sword();
        };
        

C ++ 11 이전 컴파일러를 사용하는 경우 생성자를 선언하고 직접 구현해야합니다. 이것은 다음에서 구현됩니다 Sword.cpp.

Sword::Sword(int damage) : Item(damage) {}
-------------------

생성자가 클래스와 이름이 같기 때문에 생성자를 상속하지 않습니다 (분명히 부모와 자식은 다른 이름을 가져야합니다). 하지만 자식 생성자에서 부모 생성자를 사용할 수 있습니다.

    Sword()
    : Item(3)    // Call the superclass constructor and set damage to 3
        {
                // do something 
                    }
                    
-------------------

다음과 같은 방법으로 Sword 생성자를 정의 할 수 있습니다.

Sword(int damage) : Item( damage ) {}

또한 Item의 소멸자가 가상이고 데이터 구성원 손상이 액세스 제어를 보호해야하는 경우 더 좋을 것입니다. 예를 들면

class Item{
protected:
   int damage;
   public:
      Item(int damage);
         virtual ~Item() = default;
            int GetDamage();
            };
            
-------------------

다음과 같이 파생 클래스의 생성자에서 부모의 생성자를 호출 할 수 있습니다.

Sword(int damage): Item(damage) { }



출처
https://stackoverflow.com/questions/22079959