c++class中private与protected的区别

文章讲述了C++中private和protected关键字的访问控制作用,强调了private限定在类内可见,protected允许派生类访问,且private不被继承,protected则会继承给派生类。
摘要由CSDN通过智能技术生成

在C++中,private 和 protected 都是访问控制修饰符,用于限制类中成员变量和成员函数的访问权限。它们之间的区别在于:

  1. private 成员只能被同一个类中的成员函数访问,外部代码无法直接访问。这意味着 private 成员对于类的使用者是不可见的。

  2. protected 成员可以被同一个类中的成员函数访问,也可以被派生类的成员函数访问。外部代码仍然无法直接访问 protected 成员,但派生类可以访问它们。

在继承关系中,private 成员不会被继承,而 protected 成员会被继承到派生类中。这意味着派生类可以访问基类中的 protected 成员,但不能访问 private 成员。

class Base {
private:
    int privateVar;
protected:
    int protectedVar;
};

class Derived : public Base {
public:
    void accessBaseMembers() {
        // privateVar is not accessible here
        // protectedVar is accessible here
        protectedVar = 10;
    }
};

int main() {
    Base b;
    // b.privateVar = 5; // Error: privateVar is private
    // b.protectedVar = 5; // Error: protectedVar is protected

    Derived d;
    // d.privateVar = 5; // Error: privateVar is private
    // d.protectedVar = 5; // Error: protectedVar is protected

    d.accessBaseMembers(); // This is allowed
}
在上面的示例中,privateVar 是私有成员,无法在 Base 和 Derived 类的外部直接访问。protectedVar 是受保护成员,可以在 Base 和 Derived 类的成员函数中访问,也可以在 Derived 类的派生类中访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值