java访问私有成员_C++怎样访问私有成员函数

我知道的大概是三种方法:

通过地址进行访问

通过友元函数

通过友元类

第二种和第三种是比较常见的做法,第一种可能不太常见

一,通过地址进行访问

这种方法能够使用只要是因为类的保存机制,类内只有成员变量和虚函数,所以可以利用地址来进行访问。

即通过

A a;

*((int*)&a);来实现

首先将a的地址取出来,然后转化为int型的地址,最后再用解引用为值:

#include

using namespace std;

class A

{

public:

A()

{

a = 1;

b = 2;

c = 3;

}

private:

int a;

int b;

int c;

};

int main()

{

A a;

int b = *((int*)&a);

cout << b << endl;

int b2 = *((int*)&a+1);

cout << b2 << endl;

int b3 = *((int*)&a+2);

cout << b3 << endl;

system("pause");

return 0;

}

二,通过友元函数

将函数声明为类的友元,那么类就会将函数当作自己人,然后就可以直接访问类的私有成员变量

#include

using namespace std;

class A

{

void friend show();

public:

A(){ a = 1; }

private:

int a;

};

void show()

{

A a;

cout << a.a << endl;

}

int main()

{

show();

system("pause");

return 0;

}

三,通过友元类

同上面一样,也是将声明为类的友元,然后友元类就能够访问类的私有成员变量

#include

using namespace std;

class A;

class B

{

friend A;

public:

B(){ a = 1; }

private:

int a;

};

class A

{

public:

void show()

{

B b;

cout << b.a << endl;

}

};

int main()

{

A a;

a.show();

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值