首页 >后端开发 >C++ >访问说明符如何影响 C 继承中的成员可访问性?

访问说明符如何影响 C 继承中的成员可访问性?

Barbara Streisand
Barbara Streisand原创
2024-12-26 03:27:08443浏览

How Do Access Specifiers Affect Member Accessibility in C   Inheritance?

理解继承中的访问说明符

在面向对象编程中,访问说明符是控制类成员的可访问性的关键字。从基类继承时,派生类中其成员的可访问性取决于继承时使用的访问说明符。

继承类型

C 支持三种类型继承:

  • 公共继承: 的公共成员基类成为派生类的公共成员。受保护的成员在派生类中成为受保护的成员。
  • 受保护的继承:基类的公共成员成为派生类的受保护成员。受保护的成员在派生类中成为受保护的。
  • 私有继承:基类的公共和受保护成员成为派生类的私有成员。

成员访问规则

以下是继承过程中成员的访问级别如何根据使用的访问说明符:

公共和受保护的继承:

  • 基类的公共成员在派生类中保持公共或受保护。
  • 基类的受保护成员在派生类中仍然受保护class.

私有继承:

  • 基类的公共和受保护成员将失去其访问说明符并在派生类中变为私有

示例:

class Base {
public:
    int public_member;
protected:
    int protected_member;
    int private_member; // private members are not inherited
};

class Derived1 : public Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived2 : protected Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // allowed
        protected_member = 20; // allowed
        // private_member = 30; // not accessible
    }
};

class Derived3 : private Base {
public:
    void access_member() {
        // Access rules:
        public_member = 10; // not accessible
        protected_member = 20; // not accessible
        // private_member = 30; // not accessible
    }
};

继承的最佳实践

为以下对象选择访问说明符时继承,请考虑以下事项准则:

  • 除非另有需要,否则默认为私有:私有保护类的内部实现。
  • 使用 protected 向派生类公开功能.
  • 谨慎使用公共,因为它允许访问来自类层次结构外部的成员。
  • 避免私有或受保护成员的公共继承:这会破坏封装并可能导致意外的行为。

以上是访问说明符如何影响 C 继承中的成员可访问性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn