Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

슈퍼클래스 생성자 C++를 호출하는 규칙은 무엇입니까?

<시간/>

C++에서는 일부 클래스를 파생시킬 수 있습니다. 파생 클래스의 생성자를 호출할 때 상위 클래스(기본 클래스) 생성자를 호출해야 하는 경우가 있습니다. Java와 달리 수퍼 클래스에 대한 참조 변수가 없습니다. 생성자가 매개변수화되지 않은 경우 파생 클래스와 함께 자동으로 호출됩니다. 그렇지 않으면 파생 클래스의 이니셜라이저 목록에 상위 클래스 생성자를 넣어야 합니다.

이 예에서 처음에는 인수가 없는 생성자를 볼 수 있습니다.

예시

#include <iostream>
using namespace std;
class MyBaseClass {
   public:
      MyBaseClass() {
         cout << "Constructor of base class" << endl;
      }
};
class MyDerivedClass : public MyBaseClass {
   public:
      MyDerivedClass() {
         cout << "Constructor of derived class" << endl;
      }
};
int main() {
   MyDerivedClass derived;
}

출력

Constructor of base class
Constructor of derived class

이제 매개변수를 받을 수 있는 생성자를 살펴보겠습니다.

예시

#include <iostream>
using namespace std;
class MyBaseClass {
   public:
   MyBaseClass(int x) {
      cout << "Constructor of base class: " << x << endl;
   }
};
class MyDerivedClass : public MyBaseClass { //base constructor as initializer list
   public:
      MyDerivedClass(int y) : MyBaseClass(50) {
         cout << "Constructor of derived class: " << y << endl;
      }
};
int main() {
   MyDerivedClass derived(100);
}

출력

Constructor of base class: 50
Constructor of derived class: 100