C++ 友元函數(shù)詳解:友元函數(shù)和全局函數(shù)的區(qū)別?
友元函數(shù)可訪問(wèn)類私有和受保護(hù)數(shù)據(jù)成員,而全局函數(shù)不行,友元函數(shù)在類聲明中聲明,全局函數(shù)在類外聲明,使用 friend 關(guān)鍵字聲明友元函數(shù),用 extern 關(guān)鍵字聲明全局函數(shù)。友元函數(shù)通過(guò)聲明方式獲得訪問(wèn)類成員變量的權(quán)限,如通過(guò)聲明一個(gè)友元函數(shù) getprivatedata 可以訪問(wèn) myclass 類私有變量 x。
C++ 友元函數(shù)詳解
友元函數(shù)和全局函數(shù)的區(qū)別
在 C++ 中,友元函數(shù)是一種特殊的函數(shù),它可以訪問(wèn)類成員函數(shù)中聲明的私有和受保護(hù)的數(shù)據(jù)成員。相比之下,全局函數(shù)在類外聲明,無(wú)法訪問(wèn)私有和受保護(hù)的數(shù)據(jù)成員。
友元函數(shù)的語(yǔ)法
友元函數(shù)的語(yǔ)法如下:
friend 返回類型 函數(shù)名(參數(shù)列表);
例如,聲明一個(gè)可以訪問(wèn) 中私有數(shù)據(jù)成員的友元函數(shù):
friend int getPrivateData(MyClass& object);
友元函數(shù)和全局函數(shù)的區(qū)別
友元函數(shù)和全局函數(shù)的主要區(qū)別如下:
訪問(wèn)范圍:友元函數(shù)可以訪問(wèn)類中的私有和受保護(hù)的數(shù)據(jù)成員,而全局函數(shù)不能。作用域:友元函數(shù)可以在類的聲明中聲明,而全局函數(shù)在類外聲明。聲明方式:友元函數(shù)使用 關(guān)鍵字聲明,而全局函數(shù)使用 關(guān)鍵字聲明。
實(shí)戰(zhàn)案例
考慮一個(gè)包含私有成員變量 的 類:
class MyClass {
private:
int x;
public:
int getX();
void setX(int value);
};
要訪問(wèn) 的私有數(shù)據(jù)成員 ,我們可以聲明一個(gè)友元函數(shù):
friend int getPrivateData(MyClass& object) {
return object.x;
}
使用友元函數(shù)
我們可以使用友元函數(shù)來(lái)訪問(wèn) 的私有數(shù)據(jù)成員:
int main() {
MyClass object;
object.setX(10);
int privateData = getPrivateData(object);
cout << "Private data: " << privateData << endl;
return 0;
}
運(yùn)行此代碼將輸出:
Private data: 10
相關(guān)推薦
-
內(nèi)聯(lián)函數(shù)在并行編程中的作用
內(nèi)聯(lián)函數(shù)在并行編程中用于消除線程切換開(kāi)銷(xiāo),從而提高性能。內(nèi)聯(lián)函數(shù)可通過(guò)將其調(diào)用替換為函數(shù)體代碼來(lái)消除函數(shù)開(kāi)銷(xiāo)。語(yǔ)法:使用 inline 關(guān)鍵字聲明內(nèi)聯(lián)函數(shù)。注意事項(xiàng):過(guò)度內(nèi)聯(lián)函數(shù)會(huì)引起代碼膨脹,導(dǎo)致編
-
golang函數(shù)的異步編程實(shí)踐
異步編程允許在不阻塞主線程的情況下執(zhí)行任務(wù)。go 語(yǔ)言使用輕量級(jí)線程 goroutine 和通信管道 channel 實(shí)現(xiàn)異步編程。goroutine 通過(guò) go 關(guān)鍵字創(chuàng)建,而 channel 用于
-
c語(yǔ)言中parse函數(shù)怎么用
C 語(yǔ)言中 函數(shù)的使用 函數(shù)是一個(gè)用于解析字符串的 C 語(yǔ)言函數(shù),它將字符串解析為一系列令牌。令牌是字符串中的單詞、短語(yǔ)或其他由空格或其他分隔符分隔的單元。使用方法: 函數(shù)的語(yǔ)法如下: c
-
c++中cin.get ch函數(shù)的功能
c++kquotecin.get(ch) 函數(shù)的功能是讀取標(biāo)準(zhǔn)輸入中的單個(gè)字符并存儲(chǔ)在字符變量 ch 中。1. 從標(biāo)準(zhǔn)輸入中讀取一個(gè)字符并存儲(chǔ)在 ch 中。2. 返回讀取的字符的 ascii 碼。3
-
golang函數(shù)的錯(cuò)誤處理最佳實(shí)踐
golang 函數(shù)錯(cuò)誤處理最佳實(shí)踐包括:使用 error 變量接收錯(cuò)誤;檢查 nil 值以確定是否存在錯(cuò)誤;利用 errors 包創(chuàng)建自定義錯(cuò)誤消息;運(yùn)用 defer 恢復(fù)機(jī)制處理恐慌;實(shí)戰(zhàn)案例展示了















