zoukankan      html  css  js  c++  java
  • 浅析C++:private、protected和public

    一:private、protected和public的访问权限问题:

    private:1、类中的成员函数可以调用,2、类的友元函数可以调用,3、但是类对象无法直接调用。4、对于派生类,不管是成员函数还是派生类的对象都无法进行调用。

    protected:1、类中的成员函数不可以调用,2、类的友元函数可以调用,3、类对象也无法进行调用。4、对于派生类,成员函数可以进行调用,但是派生类的对象则无法进行调用。

    public:1、可以被类中的成员函数调用,2、类的友元函数可以调用,3、类对象也可以直接调用。4、对于派生类,成员函数和派生类的对象都可以进行调用。

    注:友元函数包括1、设为友元的普通的非成员函数。2、设为友元的其它类的成员函数。3、设为友元类的所有成员函数。

    二:关于private、protected和public的继承问题:

    1、不管是private、protected还是public,子类继承了基类后,其必然继承了基类所有成员(除了基类的构造函数和析构函数),同样继承了基类空间的大小。

    #include<iostream>
    using namespace std;
    
    class A
    {
    public:
        A()
        {
            cout<<"这是class A."<<endl;
        }
    private:
        int a;
        int temp;
    };
    
    class B : private A
    {
    public:
        B()
        {
            cout<<"这是class B."<<endl;
        }
    private:
        int b;
    };
    
    
    void main()
    {
        cout<<sizeof(A)<<endl;
        cout<<sizeof(B)<<endl;
    }
    继承后容量大小改变示例:

    2、类继承后,属性的变化。

      private 属性可以被继承,但是被继承不管什么情况下(除了基类的公有成员函数和基类的友元函数)都不能被直接调用;
      使用private继承,父类的protected和public属性在子类中变为private;
      使用protected继承,父类的protected和public属性在子类中变为protected;
      使用public继承,父类中的protected和public属性不发生改变;

    如下所示:
                              public:            protected:       private:
    public继承            public              protected        不可用 
    protected继承      protected         protected        不可用 
    private继承          private             private            不可用
     
  • 相关阅读:
    小菜读书---《程序员修炼之道–从小工到专家》
    小菜读书--《大话设计模式》
    darknet-mini:带注释的darknet简化版,助你深入理解YOLO
    如何使用VLC进行视频录像
    海康相机打开的方法
    YOLOv5训练自己的数据集(超详细完整版)
    用GANs来做数据增强
    torch ----------->>>>rknn
    Linux下的tar压缩解压缩命令详解
    小缺陷目标检测网络--PCB缺陷检测—TDD-net
  • 原文地址:https://www.cnblogs.com/waiting-for/p/4330271.html
Copyright © 2011-2022 走看看