- 可见性指的是类的某些成员或方法实际上有多可见。可见指的是谁能看到它们或者调用他们。
- C++中有三个基础的可见性修饰符:
private
、protected
和public
。
class
默认可见性是private
,如果什么修饰符都不加。也就是说,这两段代码是等价的。
strict
默认可见性是public
。
private
意味着只有(Only*)这个Entity
类可以访问这些变量,也就是读取和写入。 但是,可以通过friend
关键字,让类或者函数成为类Entity
的友元,也就是可以访问Entity
的private
部分的内容。
- 由于
main
在class Entity
的作用域之外,所以不能调用X = 2
或类似的东西。
- 如果
Entity
有一个子类Player
,它也不能调用X
,如下的语法是错误的:
- 函数同理。
protected
的可见性介于private
和public
之间
protected
的意思是Entity
类和层次结构中的所有子类,都可以访问这些符号
为什么需要关注可见性的问题?
- 可见性可以让代码更加容易维护,容易理解,不管是阅读代码还是扩展代码,即使并不会对性能有影响。
- 例如,如果想改变某个按钮的位置,如果通过直接改变坐标
(X, Y)
的方式,可能并不会在屏幕上显示出来,因为还需要刷新显示器,让其重新读取。所以正确的做法是添加一个SetPosition
函数,在改变X
和Y
的值后再刷新显示器,并将其设为public
,同时将X
和Y
设为private
。