privaet,protected,public

#include <iostream>

class Derived;
void func(Derived& d);

class Base{
private:
        int _BaseVar2 ;
protected:
        int _BaseVar1 ;
public:
        virtual int getID() = 0;

};

class Derived : public Base {
private:
        int DerivedVar2 ;
        int DerivedVar1 ;
protected:
public:
        Derived():Base(),DerivedVar1(1),DerivedVar2(2){}
        virtual int getID(){
                return _BaseVar1;
        }
        friend void func(Derived& d);
};
void func(Derived& d){
        std::cout << "DerivedVar1 : " << d.DerivedVar1 << std::endl;
        //friend can access all member .
        std::cout << "_BaseVar1 : " << d._BaseVar1 << std::endl;
        //std::cout << "_BaseVar2 : " << d._BaseVar2 << std::endl;
        //inherit can access protected member .
        return ;
}

int main(){
        Derived d{};
        func(d);
        return 0;
}

  • func 函数可以访问 Derived 的所有成员(friend 关键字的特性)
  • func 函数 不可访问Base的private 成员(继承的特性)_BaseVar2
  • func 函数 可访问Base的protected成员(public继承的特性)_BaseVar1
posted @ 2022-02-25 18:06  Ccluck_tian  阅读(27)  评论(0编辑  收藏  举报