码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++覆盖和保护成员


    1.覆盖

    派生类可以定义一个和基类成员同名的成员,这叫做覆盖。在派生类中访问这样的的类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符::。

    2.基类和派生类具有同名成员的情况。

    1. class base
    2. {
    3. int j;
    4. public:
    5. int i;
    6. void func();
    7. };
    8. class derived:public base
    9. {
    10. public:
    11. int i;
    12. void access();
    13. void func();
    14. };
    15. void derived::access ()
    16. {
    17. j=5;//error
    18. i=5;//引用的时派生类的i;
    19. base::i=5;//引用的时基类的i
    20. func();//派生类的
    21. base::func();//基类的
    22. }
    23. int main()
    24. {
    25. derived obj
    26. obj.i=1;
    27. obj.base::i=1;
    28. }

    一般情况下,派生类定义和基类同名的变量是愚蠢的,但是定义同名的函数却可以存在。
    如果定义了同名的变量,那么基类的变量会在派生类的变量的前边。

    3.另一种存取权限说明符:protected(保护成员)

    (1)基类的private成员:可以被以下函数访问
    –基类的成员函数
    –基类的友元函数
    (2)基类的public成员:可以被以下函数访问
    –基类的成员函数
    –基类道德友元函数
    –派生类的成员函数
    –派生类的友元函数
    –其他函数
    (3)基类的protected成员:可以被以下函数访问
    –基类的成员函数
    –基类的与友元函数
    –派生类的成员函数可以访问当前对象的基类的保护成员
    举例子:

    1. class father
    2. {
    3. private:int nprivate:
    4. public:int npublic;
    5. protected:int nprotected;
    6. };
    7. class son:public father
    8. {
    9. void accessfather(){
    10. npublic=1; //ok
    11. nprivate=1;//wrong
    12. nprotected=1;//ok,访问从基类继承的protedted成员
    13. son f;
    14. f.nprotedted=1;//wrong,f不是当前对象
    15. }
    16. };
    17. int main()
    18. {
    19. father f;
    20. son s;
    21. f.npublic=1;//ok
    22. s.npublic=1;//ok
    23. f.nprotedted=1;//error
    24. f.nprivate=1;//error
    25. s.nprotected=1;//error
    26. s.nprivate=1;//error
    27. return 0;
    28. }

      今天的内容就讲到这里了! 

  • 相关阅读:
    mac硬盘权限限制怎么解决,mac硬盘权限拒绝访问怎么处理
    基于swing的人事管理系统
    c++实现多重继承
    手把手带你配置一个DHCP服务器
    .NET 团队公布.NET 9开发目标 并发布.NET9的首个预览版
    【2023集创赛】平头哥杯一等奖作品:基于无剑100开源SoC平台构建双核TEE安全系统
    微信小程序开发14 复杂数据库设计:如何用好云开发提供的文档型数据库?
    python绘制ROC曲线
    sd卡视频被删怎么恢复呢?
    Activity和Fragment页面 TAB
  • 原文地址:https://blog.csdn.net/wo_ai_luo_/article/details/127871433
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号