C++中成員函數(shù)和友元函數(shù)如何使用

c++
小億
118
2023-08-01 12:30:18

C++ 中成員函數(shù)和友元函數(shù)的使用方式如下:

成員函數(shù):

  1. 成員函數(shù)是定義在類的內(nèi)部的函數(shù),它可以直接訪問(wèn)類中的成員變量和其他成員函數(shù)。

  2. 成員函數(shù)可以在類的外部通過(guò)對(duì)象來(lái)調(diào)用,格式為:對(duì)象名.成員函數(shù)名()。

  3. 成員函數(shù)可以定義在類的聲明中,也可以在類的定義外部進(jìn)行定義。

  4. 成員函數(shù)可以被重載,即可以在同一個(gè)類中定義多個(gè)同名的成員函數(shù),但它們的參數(shù)列表必須不同。

友元函數(shù):

  1. 友元函數(shù)是在類的外部進(jìn)行定義的函數(shù),它可以訪問(wèn)類的私有成員。

  2. 友元函數(shù)的聲明需要在類的聲明中進(jìn)行,可以在類的內(nèi)部進(jìn)行定義,也可以在類的外部進(jìn)行定義。

  3. 友元函數(shù)的調(diào)用方式和普通函數(shù)一樣,直接使用函數(shù)名進(jìn)行調(diào)用。

  4. 友元函數(shù)不是類的成員函數(shù),所以它沒(méi)有this指針,不能直接訪問(wèn)類的成員變量和成員函數(shù),需要通過(guò)對(duì)象來(lái)訪問(wèn)。

下面是一個(gè)示例代碼,展示了成員函數(shù)和友元函數(shù)的使用:

#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); // 友元函數(shù)的聲明
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(); // 調(diào)用成員函數(shù)
friendFunc(obj); // 調(diào)用友元函數(shù)
obj.memberFunc(); // 成員函數(shù)中私有變量已被友元函數(shù)修改
return 0;
}

輸出結(jié)果:

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

0