我知道的大概是三種方法:
- 通過地址進行訪問
- 通過友元函式
- 通過友元類
第二種和第三種是比較常見的做法,第一種可能不太常見
一,通過地址進行訪問
這種方法能夠使用只要是因為類的保存機制,類內只有成員變數和虛函式,所以可以利用地址來進行訪問,
即通過
A a;
*((int*)&a); 來實作
首先將a的地址取出來,然后轉化為int型的地址,最后再用解參考為值:
#include<iostream>
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<iostream>
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<iostream>
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/253145.html
標籤:其他
上一篇:XML簡介與Dom4j決議XML
