C/C++编程:protected的访问权限「建议收藏」

C/C++编程:protected的访问权限「建议收藏」在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承只有在派生类中才可以通过派生类对象访问基类的protected成员#include<iostream>usingnamespacestd;classbase{public:bas..

大家好,欢迎来到IT知识分享网。

  1. 在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化

  2. 基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承

  3. 只有在派生类中才可以通过派生类对象访问基类的protected成员

#include <iostream>
using namespace std;

class base { 
   
public:
    base() { 
   }
    virtual ~base() { 
   }

protected:
    int int_pro;  // 基类可以访问自己所有的东西
};

class derived : public base { 
   
public:
    derived() { 
   }
    ~derived() { 
   }

    void Print(derived &obj){ 
   obj.int_pro = 24;}
    //void Print(base &obj){obj.int_pro = 24;}
    void foo(){ 
   
        this->int_pro = 1;  // 这里访问m没有问题 ---> 继承了父类的protected
    }

};

int main()
{ 
   
    base *pBase = new base;
   // pBase->int_pro = 11; // 错误:‘int base::int_pro’是保护的 ---> 基类对象不能访问基类的protected成员

    derived *pderived = new derived;
  // pderived->int_pro = 11; // 自己的对象都不能访问,怎么可能让继承者访问
   
    delete pBase;

    return 0;
}

在这里插入图片描述

  • private: 只能被类成员函数及友元访问,不能被其他任何访问,本身的类对象也不行。
  • protected: 只能被类成员函数、子类函数及友元访问,不能被其他任何访问,本身的类对象也不行。
  • public: 能被类成员函数、子类函数、友元访问,也能被类的对象访问。
  • 派生类的成员和友元只能通过派生类对象访问基类的受保护成员,不能直接访问基类对象的受保护成员。如:
class Base{ 
   
protected:
    int val;
};

class Derived:public Base{ 
   
    friend void f1(Base&);
    friend void f2(Derived&);
};

void f1(Base &b) { 
   b.val = 10;}   //错误,不能通过基类对象访问
void f2(Derived &d) { 
   d.val = 10;}  //正确,可以通过派生类对象访问基类部分的protected

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24556.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信