C++中类的三种访问权限:private、public与protect

C++中类的三种访问权限:private、public与protect

类与面向对象

C++中可以定义一个类。定义一个类,其实就是把一堆实体的共同特征给提取出来。这种面向对象而不是面向过程的解决问题的思想,大大提升了复杂大型软件的开发效率。比如在游戏开发中,需要生成一批属性相近、行为相似的怪物,那我们可以定义一个怪物类:

class Monster { private: 		//私有类型成员int attack = 15;	//攻击力属性public:			//公有类型成员
  	
  		int health = 100;	//生命值属性void strike ( ) {  //怪物对玩家进行一次攻击......
		}void recover( ) {  //怪物回血,并提高自身攻击力if (health <= 95) health += 5;
  			attack += 5;
		}	

我们知道,一个类中可以有两种成员在里面:类中成员变量和类中成员函数。成员变量用于描述类的静态属性,如上述的 health 和 attack;成员函数其实就是类的动态行为,比如上述的strike()和recover()。

补充一下:函数,本质上一串能够完成特定行为的代码。例如其中strike()可以使怪物对玩家造成伤害(改变玩家生命值);recover()可以恢复一定量的生命值并提高攻击力。

如果想要增加游戏难度,则可以增加怪物类中strike()和recover()调用频率,或者提高health和attack的初始值,这些操作在C++中都很容易做到。这种面向对象的编程思想,让一些从面向过程的角度看来十分抽象的行为,都能够用C++比较轻松地实现。

那么,如此便够了么?仅仅用成员变量和成员函数便可以完成许多复杂操作,我们不应该窃喜么?

三种访问权限

private与public

上述代码中的 private 和 public 是怎么回事?他们的存在有什么意思?

private代表类内私有成员,仅有类内函数可以访问private,类外一切函数(包括继承者)均不可访问private成员。

public代表类内公有成员,无论类内还是类外(包括继承者)的函数都可以访问public成员。

通过这两个关键字,我们实现了对类内成员的访问权限控制。在一些特定情况下,访问权限控制十分方便。比如在上述代码中,我们将怪物的攻击力attack设置为private,这样就只有类内的recover()函数能够访问attack属性;将生命值health设置为public,于是当玩家对怪物进行攻击时,health也能被玩家类player的攻击函数访问而减小。

除此以外,还有另一个关键字protect(即保护成员),主要用在类的继承中。如果有任何变量或函数被声明为protect,那么这些保护成员可以被类的继承者中成员函数访问,而无法被类外任何函数访问。因为这个关键字涉及继承机制,稍微有点复杂,所以我们留到下次,和 C++ 继承机制一起讲。

    原文作者:「已注销」
    原文地址: https://blog.csdn.net/weixin_51268298/article/details/122569959
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞