• C++作用域限定符:private/public与protected


    C++的作用域限定符其实涉及到了C++特性中的封装和继承。

    public/private:涉及类的封装特性。对于一个类需要对外展示的部分,我们可以将其声明为public,对于不希望对外展示的,我们将其声明为private。
    protected:涉及类的继承特性。对于一个子类想拥有父类的某个功能,但是父类又不希望子类对外展示,这时候就可以将成员声明为protected属性,只可以父类和子类使用。

    注:本文中所说的类以及父类、子类均是抽象类的概念,不是类对象。

    public

    类的实现就是对外提供某些功能,外部通过调用类提供的某些接口引入类的功能。这就要求类成员必须声明为public,从而才能被外部所调用,这是类对外展示的部分。
    而对外展示的功能函数有时候也依赖本类中其他的函数实现,但是被依赖的这部分我们只希望在类内部使用,不希望外部看到,这就涉及到了private特性。

    private

    定义为private属性的类成员,只能被本类调用,这部分成员在本类中是“隐藏”成员,即为了实现其他接口,“自己情愿退居幕后”,不向外展示。

    proteced

    其实protected是为继承而作的。类有继承的属性,如果一个父类有某个功能,而这个功能又不希望被外部看到,但是子类确实也需要这个功能,这个时候怎么办呢?此时就可以将父类的这个功能函数定义成protected属性的,子类继承后,该函数只能在父类和子类内部可以使用,外部无法使用。也就保存了该功能在父类中的初衷。
    当然了上面说的都是作用域限定符在一个类内部的说明,private/public/protected也可以用于继承,其实到底要使用哪种继承特性,可以参考上面总结的作用域限定符在一个类中的作用,因为归根结底,类继承后就是一个类。

  • 相关阅读:
    HashMap 和 Hashtable 的区别
    提高利用运行(安装)内存
    MyEclipse、Hbuilder、Idea快捷键
    本地安装MySQL详细教程
    MyEclipse/Eclipse相关设置
    MyEclipse 10导入JDK1.7或1.8
    Oracle视图(和Mysq一样l)
    Oracle事务
    MySql综合知识汇总
    Mysql存储过程
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/13222305.html
Copyright © 2020-2023  润新知