>  기사  >  백엔드 개발  >  C++ 멤버 함수의 상속 규칙

C++ 멤버 함수의 상속 규칙

WBOY
WBOY원래의
2024-04-18 14:45:011135검색

C++ 멤버 함수 상속 규칙: 공개 상속: 파생 클래스가 기본 클래스의 멤버 함수를 공개적으로 상속하는 경우 파생 클래스의 멤버 함수도 공개됩니다. 상속 보호: 파생 클래스가 기본 클래스의 멤버 함수를 보호하고 상속하는 경우 파생 클래스의 멤버 함수도 보호됩니다. 비공개 상속: 파생 클래스는 기본 클래스의 멤버 함수를 비공개로 상속합니다. 파생 클래스의 멤버 함수는 비공개이며 파생 클래스 자체에서 직접 액세스할 수 없습니다.

C++ 成员函数的继承规则

C++ 멤버 함수에 대한 상속 규칙

C++ 객체 지향 프로그래밍에서 클래스는 상속을 통해 기본 클래스에서 데이터 멤버와 멤버 함수를 상속받을 수 있습니다. 멤버 함수 상속의 경우 다음 규칙을 따릅니다.

  • 공개 상속: 파생 클래스가 기본 클래스의 멤버 함수를 공개적으로 상속하는 경우 파생 클래스의 멤버 함수도 공개됩니다.
  • 보호된 상속: 파생 클래스는 기본 클래스의 멤버 함수를 보호하고 상속한 다음 파생 클래스의 멤버 함수를 보호합니다.
  • 개인 상속: 파생 클래스가 기본 클래스의 멤버 함수를 비공개로 상속하는 경우 파생 클래스의 멤버 함수는 비공개이며 파생 클래스 자체에서 직접 액세스할 수 없습니다.

실제 예:

다음 예를 고려하십시오.

class Shape {
public:
    virtual double getArea();  // 抽象函数
};

class Rectangle : public Shape {
public:
    Rectangle(double length, double width);
    double getArea() override;  // 重写父类的 getArea 函数
private:
    double length;
    double width;
};

class Square : protected Shape {
public:
    Square(double side);
    double getArea() override;
private:
    double side;
};

class Circle : private Shape {
public:
    Circle(double radius);
    double getArea() override;
private:
    double radius;
};

이 예에서는:

  • Rectangle 클래스는 Shape 클래스를 공개적으로 상속하므로 getArea 함수는 Rectangle 클래스에서도 공개됩니다. Rectangle 类公有继承 Shape 类,因此 getArea 函数在 Rectangle 类中也是公有的。
  • Square 类保护继承 Shape 类,因此 getArea 函数在 Square 类中也是保护的。
  • Circle 类私有继承 Shape 类,因此 getArea 函数在 Circle
  • protected Square 클래스는 Shape 클래스를 상속하므로 getArea 함수도 Square 클래스에서 보호됩니다. .

Circle 클래스는 Shape 클래스를 비공개로 상속하므로 getArea 함수는 Circle 클래스에서 비공개입니다.

    참고:
  • 추상 함수는 파생 클래스에서 재정의되어야 합니다.
  • 파생 클래스의 멤버 함수는 기본 클래스의 보호 및 비공개 데이터 멤버에 액세스할 수 있지만 기본 클래스의 공개 및 보호 멤버 함수만 호출할 수 있습니다.
🎜파생 클래스의 생성자와 소멸자는 기본 클래스에서 상속되지 않습니다. 🎜🎜

위 내용은 C++ 멤버 함수의 상속 규칙의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.