C++ 中成員函數和友元函數的使用方式如下:
成員函數:
成員函數是定義在類的內部的函數,它可以直接訪問類中的成員變量和其他成員函數。
成員函數可以在類的外部通過對象來調用,格式為:對象名.成員函數名()。
成員函數可以定義在類的聲明中,也可以在類的定義外部進行定義。
成員函數可以被重載,即可以在同一個類中定義多個同名的成員函數,但它們的參數列表必須不同。
友元函數:
友元函數是在類的外部進行定義的函數,它可以訪問類的私有成員。
友元函數的聲明需要在類的聲明中進行,可以在類的內部進行定義,也可以在類的外部進行定義。
友元函數的調用方式和普通函數一樣,直接使用函數名進行調用。
友元函數不是類的成員函數,所以它沒有this指針,不能直接訪問類的成員變量和成員函數,需要通過對象來訪問。
下面是一個示例代碼,展示了成員函數和友元函數的使用:
#include <iostream>
using namespace std;
class MyClass {
private:
int privateVar;
public:
MyClass(int var) {
privateVar = var;
}
void memberFunc() {
cout << "This is a member function." << endl;
cout << "Private variable: " << privateVar << endl;
}
friend void friendFunc(MyClass obj); // 友元函數的聲明
void setPrivateVar(int var) {
privateVar = var;
}
};
void friendFunc(MyClass obj) {
cout << "This is a friend function." << endl;
cout << "Private variable: " << obj.privateVar << endl;
obj.setPrivateVar(10);
cout << "Private variable after modification: " << obj.privateVar << endl;
}
int main() {
MyClass obj(5);
obj.memberFunc(); // 調用成員函數
friendFunc(obj); // 調用友元函數
obj.memberFunc(); // 成員函數中私有變量已被友元函數修改
return 0;
}
輸出結果:
This is a member function.
Private variable: 5
This is a friend function.
Private variable: 5
Private variable after modification: 10
This is a member function.
Private variable: 10