溫馨提示×

C++中的成員函數(shù)和友元函數(shù)怎么使用

c++
小億
104
2023-08-16 10:41:09
欄目: 編程語言

成員函數(shù)是定義在類中的函數(shù),它可以訪問類中的成員變量和其他成員函數(shù)。成員函數(shù)使用類的對象來調(diào)用,并且隱式地訪問該對象的成員。

友元函數(shù)是在類外部定義的函數(shù),它可以訪問類的私有成員。友元函數(shù)可以在類中聲明為友元,或者在類外部聲明為友元。

下面是成員函數(shù)和友元函數(shù)的使用示例:

#include <iostream>
class MyClass {
private:
int x;
public:
MyClass(int num) : x(num) {}
// 成員函數(shù)
void printX() {
std::cout << "x 的值為:" << x << std::endl;
}
// 友元函數(shù)聲明
friend void modifyX(MyClass& obj, int num);
};
// 友元函數(shù)定義
void modifyX(MyClass& obj, int num) {
obj.x = num;
}
int main() {
MyClass obj(5);
obj.printX(); // 輸出:x 的值為:5
modifyX(obj, 10);
obj.printX(); // 輸出:x 的值為:10
return 0;
}

在上面的示例中,MyClass 類有一個私有成員變量 x 和一個成員函數(shù) printX()。printX() 函數(shù)內(nèi)部可以訪問 x 的值。

modifyX() 是一個友元函數(shù),可以訪問 MyClass 類的私有成員變量 x。在 main() 函數(shù)中,首先調(diào)用 printX() 輸出 x 的初始值 5,然后調(diào)用 modifyX() 修改 x 的值為 10,并再次調(diào)用 printX() 輸出修改后的值。

注意,友元函數(shù)可以直接訪問私有成員變量,但它不是類的成員函數(shù),因此不能使用類的對象來調(diào)用。在示例中,我們直接傳遞了 obj 對象作為參數(shù)給 modifyX() 函數(shù)進(jìn)行調(diào)用。

0