理解类级别的访问控制权限——类的成员函数可以访问该类所有对象的私有成员

本文通过C++示例介绍了如何在一个类的成员函数中访问该类其他实例的私有成员变量及函数,展示了public、private、protected权限的作用。

无论是java还是c++都提供了三种访问控制权限:

public、private、protected

它们提供类级别的访问控制,但是类的成员函数可以访问同一类的所有对象的所有私有成员,例如下面的C++示例:

#include "stdafx.h"
#include <stdlib.h>
class test
{
protected:
private:
	int ivalue;
	int _get_and_add()
	{
		return (ivalue + 10);
	}
public:
	test()
	{
		ivalue = 0;
	}
	void setValue(int _ivalue)
	{
		ivalue = _ivalue;
	}
	void setValue(test t)
	{
		ivalue = t.ivalue;
	}
	void add(test t)
	{
		ivalue += t._get_and_add();
	}
	int getValue()
	{
		return ivalue;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	test t1,t2;
	printf("1. value:\n");
	printf("  t1: %d \n",t1.getValue());
	printf("  t2: %d \n",t2.getValue());

	t2.setValue(100);
	t1.setValue(t2);
	printf("2.after setValue:\n");
	printf("  t1: %d \n",t1.getValue());
	printf("  t2: %d \n",t2.getValue());


	t1.add(t2);
	printf("3.after add_other:\n");
	printf("  t1: %d \n",t1.getValue());
	printf("  t2: %d \n",t2.getValue());
	system("pause");
	return 0;
}


其中类test的成员函数:

	void setValue(test t)
	{
		ivalue = t.ivalue;
	}


	void add(test t)
	{
		ivalue += t._get_and_add();
	}

分别访问了同类的其他对象(由参数传递过来)t 的私有数据成员 ivalue以及私有函数,上述程序的输出结果为:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值