访问控制

让编程改变世界

Change the world by program


访问控制

在此前的例子里,我们无论是Animal, Pig 和 Turtle 类的所有成员都是用 public: 语句声明。 所谓访问控制,就是C++ 提供了一种用来保护类里的方法和属性的手段。 这里所说的保护意思是对谁可以调用某个方法和访问某个属性加上一个限制。如果某个对象试图调用一个它无权访问的函数,编译器将报错。

我们看下C++中的访问级别:

[caption id="attachment_475" align="aligncenter" width="300"] C++中的访问级别[/caption]   利用访问级别来保护类里的方法和属性很简单,只要在类里的某个地方写出一个访问级别并在其后加上一个冒号。 从那个地方开始往后的所有方法和属性都将受到相应的保护,直到遇到下一个访问级别或者到达这个类的末尾为止! class Animal { public:

std::string name;

Animal(std::string theName);

void eat();

void sleep();

void drool();

};   请看 name 属性的访问级别是 public,这就意味着任何代码都可以改变它的值。 事实我们今后就完全通过 pig.name = “小甲鱼” 来任意改名字了。 我们发觉,如没有任何限制,猪的名字一下子就可以改掉了。   这种隐患对这个简单的小程序来说可能没什么大不了的,但如果是发生在一个大型的程序里就足以引发一个逻辑漏洞。 注:BUG无法避免的原因正是因为我们无法模拟各种情况的的输入和修改带来的影响。 就像我们不能随便改变一个人的身份证的名字一样,Animal 类里的 name 属性应该受到保护。   尝试一下:test2(课件及源码下载)

我们需要认识到

一定要记住使用这些访问级别!即时只有你一个人在开发某个项目,全部记住各个类的调用方法也是一件困难的事情。 给每个方法和属性加上 protected 或 private 访问级别,就由编译器替你记住那些禁令并在你违反的时候发出警报。   使用访问级别对身为程序员的你只有好处,没有坏处!再优秀的程序员也需要这种机械的保护! 使用 private 的好处是,今后可以只修改某个类的内部实现,而不必重新修改整个程序。这是因为其他代码根本就访问不到 private 保护的内容,所以不怕”牵一发而动全身”的惨剧发生!   在同一个类定义里可以使用多个 public:, private: 和 protected: 语句,但最好把你的元素集中到一个地方,这样代码的可读性会好很多。 在编写你的类定义代码时,应该从 public: 开始写起,然后是 protected:, 最后是 private:。 虽然编译器并不挑剔这些顺序,但这么做的好处是 —— 当你想知道某个特定的类提供了哪些方法和属性时,好的顺序可以为你节省大量的时间!

课后想一想:

class Pig : public Animal { … } 是什么意思?! [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://urlxf.qq.com/?JrYz22q']视频下载[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LCDPQSZKQGOL']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/03/17/3846184.html

访问控制 - C++快速入门18相关推荐

  1. POI3.5 HSSFXSSF Excel 操作快速入门

    POI3.5 HSSF&XSSF Excel  操作快速入门 1 本文翻译自 http://poi.apache.org/spreadsheet/quick-guide.html 欢迎交流指正 ...

  2. QT快速入门、三点求圆心实现详解

    在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...

  3. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  4. Kubernetes CKA认证运维工程师笔记-Docker快速入门

    Kubernetes CKA认证运维工程师笔记-Docker快速入门 1. Docker 概念与安装 1.1 Docker 是什么 1.2 Docker 基本组成 1.3 版本与支持平台 1.4 Do ...

  5. Docker快速入门,看这个就够了

    Docker快速入门 一.Docker介绍 1.1 Docker背景 1.2 Docker概念 1.3 Docker的优势 1.4 Docker的三个基本概念 二.Docker的安装和使用 2.1 安 ...

  6. notes-Java学习指南①(快速入门)(网易云课堂)

    Java学习指南①(快速入门)(网易云课堂) 讲师:邵发(阿发你好) 章节1:第1章 Hello,World 课时1关于本篇11:55 编程语言的演化 机器码-汇编语言-C语言-C++ -java/C ...

  7. 最新《小甲鱼C++编程快速入门教程》

    这套教程一共40讲,内容真心不错,其实大家看看目录也就能得出结论了  ===============课程目录=============== <鱼C论坛小甲鱼C++编程快速入门培训系列教程> ...

  8. Lua+OpenResty快速入门

    Lua+OpenResty快速入门 Lua 概念 特性 应用场景 Lua的安装 Lua的语法 第一个Lua程序 Lua的注释 标识符 关键字 运算符 全局变量&局部变量 Lua数据类型 nil ...

  9. 【安全利器SELinux快速入门系列 | 01】SELinux基础入门

    这是机器未来的第35篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125914553 文章目录 1. 研究目标 2. se ...

最新文章

  1. Java中将List中的值赋给另一个List几种方法实现
  2. win7触摸板怎么关闭_笔记本电脑触摸板如何开关 笔记本电脑触摸板设置方法【详解】...
  3. 常见的爬虫分析库(1)-Python3中Urllib库基本使用
  4. 宁德技校学计算机报名,你知道现在宁德市师范学校计算机报2012年的考试开始报名了吗,怎样报名啊...
  5. JSP自定义标签入门实例
  6. 分布式光纤传感技术(DTS/BOTDA/BOTDR/光栅/OTDR)近几年会有较快的发展(本人预测)
  7. 对数周期天线hfss建模_07 HFSS软件二次开发在对数周期天线设计中的应用
  8. c语言数组输入空格回车问题
  9. 初识MIMO(六):MU-MIMO的仿真
  10. 计算机颜色管理器,系统颜色管理完全攻略
  11. 收集了以下神注释,缓解你们工作中的压力
  12. 2022杭电多校第八场题解
  13. Android applink 踩坑指南
  14. 我的晋升答辩小结:测试拿什么证明自己的能力?
  15. 全球气候数据下载方式
  16. 云计算大数据之 Kafka集群搭建
  17. uniapp html2canvas 生成图片
  18. ThinkPHP CSV导入与导出
  19. 怎么识别图片数据转到Excel?手机也能轻松做到
  20. 用什么软件去除视频上的水印?

热门文章

  1. python基础知识总结-python编程语言基础知识总结
  2. 开课吧python课程-Python教父廖雪峰加入开课吧 打造技术品类黄金内容班底
  3. python如何爬虫-如何使用python写爬虫程序
  4. python的就业方向和前景-2020年Python就业方向、就业前景分析
  5. python3.7.2下载-Python 3.7.2和3.6.8版本发布下载,附更新说明
  6. python的编程模式-Python 编程,应该养成哪些好的习惯?
  7. 学python要多少钱-培训python大概要多少钱?
  8. python基础代码-python基础,python基础代码大全
  9. python从入门到精通怎么样-《Python编程从入门到精通》
  10. python自学网站有哪些-小白如何入门Python? 制作一个网站为例