浅谈C++ 类权限

特点

权限

是对类中的数据和方法的保护

类别

  • public
  • protected
  • private

特赦(friend)

  • 友元类
  • 友元函数

修改(using)

权限修改并不是修改父类中的权限, 而是在子类中对父类更加严格的限制下,开放局部已有的权限。

#include <iostream>

class Base
{
public:
    void say()
    {
        std::cout << "hello" << std::endl;
    }
};

class Child: private Base
{
public:
    using Base::say;
};

int main()
{
    Child* ptr_child = new Child();
    ptr_child->say();
    return 0;
}

重定义

对已有的父类方法的重定义

#include <iostream>

class Base
{
public:
    void say()
    {
        std::cout << "Base hello" << std::endl;
    }

    void say(std::string &name)
    {
        std::cout << "Base hello" << name << std::endl;
    }
};

class Child: private Base
{
public:
    void say()
    {
        std::cout << "Child hello" << std::endl;
    }
};

int main()
{
    Child* ptr_child = new Child();
    //调用重定义后的方法
    ptr_child->say();
    
    //对say 方法进行重定义后,只能使用重定义的方法,其他say的重载方法都不能使用,
    //除非转换成父类(向上转型)
    Base* ptr_base = (Base*)ptr_child;
    std::string name = "me";
    ptr_base->say(name);
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,920评论 0 14
  • C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...
    863cda997e42阅读 783评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,153评论 25 708
  • 【但11:33-39】民间的智慧人必训诲多人,然而他们多日必倒在刀下,或被火烧,或被掳掠抢夺。他们仆倒的时候,稍得...
    杨琪Charles阅读 549评论 0 0
  • Stan刘先森阅读 257评论 0 0

友情链接更多精彩内容