濡備綍閫氳繃C++鎴愬憳鍑芥暟鎸囬拡璁块棶绉佹湁鎴愬憳
鍦?C++ 涓紝鍙互閫氳繃浣跨敤鎴愬憳鍑芥暟鎸囬拡鍜岀被鐨勫弸鍏冩潵璁块棶绉佹湁鎴愬憳銆備互涓嬫槸涓€涓畝鍗曠殑绀轰緥浠g爜锛?/p>
#include <iostream>
class MyClass {
private:
int privateMember;
public:
MyClass(int value) : privateMember(value) {}
int getPrivateMember() {
return privateMember;
}
// 澹版槑涓哄弸鍏冨嚱鏁?/span>
friend int getPrivateMemberUsingPointer(MyClass* obj);
};
// 鍙嬪厓鍑芥暟瀹氫箟
int getPrivateMemberUsingPointer(MyClass* obj) {
return obj->privateMember;
}
int main() {
MyClass obj(42);
// 浣跨敤鎴愬憳鍑芥暟鎸囬拡璁块棶绉佹湁鎴愬憳
int (MyClass::*ptr)() = &MyClass::getPrivateMember;
std::cout << "Private member value: " << (obj.*ptr)() << std::endl;
// 浣跨敤鍙嬪厓鍑芥暟璁块棶绉佹湁鎴愬憳
std::cout << "Private member value using friend function: " << getPrivateMemberUsingPointer(&obj) << std::endl;
return 0;
}
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑澹版槑浜嗕竴涓弸鍏冨嚱鏁?getPrivateMemberUsingPointer
鏉ヨ闂鏈夋垚鍛?privateMember
銆傚悓鏃讹紝鎴戜滑杩樺畾涔変簡涓€涓垚鍛樺嚱鏁版寚閽?ptr
锛岀敤浜庤闂鏈夋垚鍛樸€傞€氳繃杩欎袱绉嶆柟寮忥紝鎴戜滑鍙互鎴愬姛璁块棶骞惰緭鍑虹鏈夋垚鍛樼殑鍊笺€?/p>