c++可见性
常见的三种visibility类型:private ,protected ,public
c++类中的默认可见性类型是private,c++结构体的默认可见类型是public
private的意思是,只有这个类才可以读写,使用private类型
#include<iostream> class Entity { private: int X; public: Entity() { X=0; } };//Entity类内的构造函数可以调用Entity内的私有类 class Player : public Entity { public: Player() { X=0;//不可以,只有Entity本身或Entity的friends才可以访问他的私有类型 //它的子类也不可以访问 } };
也不能在函数中直接访问Entity的私有类,比如:
int main() { Entity e; e.X=1; }
protected的开放程度要略高于private,但是略低于public,他表示这个类本身和它的子类,都可以访问和使用protected,但是除了这个类自己和它的子类,其他都不可以。
#include<iostream> class Entity { protected: int X; public: Entity() { X=0; } };//Entity类内的构造函数可以调用Entity内的保护类 class Player : public Entity { public: Player() { X=0;//可以,它的子类也可以访问保护类型 } }; int main() { Entity e; e.X=1;//不可以,除了类自己和它的子类,其他时候都不能访问保护类型 std::cin.get(); }
public就是都可以访问了,公有的。在接触代码的时候,可视化类型可以帮助我们清楚地看到,代码中的什么部分是我们有权限使用的(public),有哪些部分是我们不要轻易去动的(private,protected),如果我们在类中的变量或者函数被标上了私有类,那么我们就很清楚,这个标记为私有类的变量或函数我们不能在外面调用它。
无情的摸鱼机器