当前位置:鱼C工作室 >C++ > 查看文章

访问控制 – C++快速入门18

访问控制

 

让编程改变世界

Change the world by program


 

访问控制

 

在此前的例子里,我们无论是Animal, Pig 和 Turtle 类的所有成员都是用 public: 语句声明。

所谓访问控制,就是C++ 提供了一种用来保护类里的方法和属性的手段。

这里所说的保护意思是对谁可以调用某个方法和访问某个属性加上一个限制。如果某个对象试图调用一个它无权访问的函数,编译器将报错。

 

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

C++中的访问级别

 

利用访问级别来保护类里的方法和属性很简单,只要在类里的某个地方写出一个访问级别并在其后加上一个冒号。

从那个地方开始往后的所有方法和属性都将受到相应的保护,直到遇到下一个访问级别或者到达这个类的末尾为止!

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 { … } 是什么意思?!


为您推荐

报歉!评论已关闭.