C++ private 和 protected类型的区别

用例子说明:

class Entity
{
public:
	Entity() {
		X = 0;
	}

private:
	int X, Y;
};


class Player: public Entity
{
public:
	Player() {

	}

private:

};


int main()
{
	Entity e;

	std::cin.get();
}

如上,Entity 中有两个 private 变量 X, Y 。 Entity 的 public 构造函数是可以访问 X, Y的。 但是对于子类 Player 的构造函数来说,是不能访问 private 变量 X, Y 的。在外部函数 main() 中实例化一个Entity 的对象, 也不能访问 Entity 中的 X,Y。 即 private 变量只允许被当前类中的成员函数或者变量访问,子类和外部类或方法都是不能访问的。

那如果 X, Y 被定义为 protected 呢?


class Entity
{
public:
	Entity() {
		X = 0;
	}

protected:
	int X, Y;
};

class Player: public Entity
{
public:
	Player() {
		X = 2;
	}

private:

};

int main()
{
	Entity e;

	std::cin.get();
}

可以看到,这时,子类 Player 中的方法可以访问 X, Y 了,但是 main() 函数中的实例 e 依然不能访问 X, Y.

public 就不说了,public 其实就是公开的,所有的类和方法都可以访问。

另外,如果不指定 public 或者 private 的话,那么 class 中变量或者函数默认的是private。 如果是 struct 的话,默认则是 public.

当然,还有另外一个类没有提到,Friends 类。
这个类我目前还没有学到~ 。 之后再写。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值