protected

在 C++ 中,protected 是一种访问控制修饰符,用于控制成员的访问权限。它的主要作用是使得成员在类的派生类中可访问,但不允许外部代码直接访问。这种访问权限控制有助于实现封装和继承的设计模式。

protected 的作用

  • 访问控制:
  • 类内访问:protected 成员可以被同一个类中的方法访问。
  • 派生类访问:protected 成员可以被派生类中的方法访问,即使派生类对象在外部代码中创建,但这些 protected
    成员不能被外部直接访问。
  • 外部访问:protected 成员不能被类外的代码直接访问,只能通过公有的接口间接访问。

使用场景

  1. 继承中的接口设计

protected 成员通常用于提供给派生类的内部实现细节,而不是让外部代码直接访问。例如,可以将某些数据成员或方法声明为 protected,以允许派生类修改或使用这些成员,但不暴露给所有的用户。

  1. 隐藏实现细节:

protected 成员有助于隐藏类的内部实现细节,只允许派生类和类本身访问,增强了封装性和数据隐藏性。

示例

以下是一个使用 protected 的示例,演示了如何在基类和派生类中访问 protected 成员。

#include <iostream>

class Base {
protected:
    int protectedValue;

public:
    Base(int value) : protectedValue(value) {}

    void display() {
        std::cout << "Base protectedValue: " << protectedValue << std::endl;
    }
};

class Derived : public Base {
public:
    Derived(int value) : Base(value) {}

    void modifyValue(int newValue) {
        protectedValue = newValue; // 可以访问 protected 成员
    }

    void display() {
        std::cout << "Derived protectedValue: " << protectedValue << std::endl;
    }
};

int main() {
    Base baseObj(10);
    baseObj.display(); // 输出: Base protectedValue: 10

    Derived derivedObj(20);
    derivedObj.display(); // 输出: Derived protectedValue: 20

    derivedObj.modifyValue(30);
    derivedObj.display(); // 输出: Derived protectedValue: 30

    // baseObj.protectedValue = 40; // 错误:无法直接访问 protected 成员
    return 0;
}

关键点总结

  • 保护成员访问:protected 成员可被类本身和其派生类访问,但不能被类外的代码直接访问。
  • 继承和封装:使用 protected 可以在继承体系中提供必要的接口,同时保护不需要暴露给外部的实现细节。
  • 提高代码的灵活性:允许派生类在不破坏封装的情况下访问和修改基类的内部数据。

使用 protected 访问控制修饰符时,要确保设计上的合理性,以避免滥用,使得封装性和接口设计保持一致。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值