C++中的友元函數(shù)是指可以訪問(wèn)類(lèi)的私有成員的非成員函數(shù)或者類(lèi)的成員函數(shù)?;?lèi)的友元函數(shù)是指可以訪問(wèn)基類(lèi)的私有成員的非成員函數(shù)或者派生類(lèi)的成員函數(shù)。
在C++中,如果派生類(lèi)需要訪問(wèn)基類(lèi)的私有成員,可以通過(guò)將基類(lèi)的友元函數(shù)聲明為派生類(lèi)的友元函數(shù)來(lái)實(shí)現(xiàn)。這樣派生類(lèi)的成員函數(shù)就可以訪問(wèn)基類(lèi)的私有成員,從而實(shí)現(xiàn)對(duì)基類(lèi)私有數(shù)據(jù)的訪問(wèn)。
基類(lèi)的友元函數(shù)的聲明和定義與普通的友元函數(shù)相同,只是在聲明和定義時(shí)需要在函數(shù)前面加上基類(lèi)的類(lèi)名和作用域解析符號(hào)"::"。
示例代碼如下:
#include <iostream>
class Base {
private:
int privateData;
friend void friendFunction(Base& b); // 聲明友元函數(shù)
};
void friendFunction(Base& b) { // 定義友元函數(shù)
std::cout << "Accessing private data of Base class: " << b.privateData << std::endl;
}
int main() {
Base b;
friendFunction(b); // 調(diào)用友元函數(shù)
return 0;
}
在上面的示例中,friendFunction
是Base
類(lèi)的友元函數(shù),可以訪問(wèn)Base
類(lèi)的私有成員privateData
。在main
函數(shù)中,我們通過(guò)調(diào)用friendFunction
函數(shù)來(lái)訪問(wèn)Base
類(lèi)的私有成員。