中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++中成員函數和友元函數的使用及區別詳解

c++
小云
129
2023-08-16 12:42:52
欄目: 編程語言

成員函數和友元函數是C++中用來訪問和操作類的成員的兩種不同的方式。

成員函數:

成員函數是定義在類內部的函數,它可以直接訪問類的私有成員。成員函數可以通過對象或者指針來調用。

例如:

class MyClass {
private:
int x;
public:
void setX(int value) {
x = value;
}
int getX() {
return x;
}
};

在上面的例子中,setX和getX都是成員函數,它們可以直接訪問類的私有成員x。通過創建一個對象或者指針來調用這些成員函數,可以對x進行賦值和讀取操作。

MyClass obj;
obj.setX(5);
int value = obj.getX();

友元函數:

友元函數是定義在類外部的函數,它可以訪問類的私有成員。友元函數要在類內部進行聲明,并在類外部進行定義。友元函數可以通過對象或者指針來調用。

例如:

class MyClass {
private:
int x;
public:
void setX(int value) {
x = value;
}
friend void printX(MyClass obj); // 友元函數的聲明
};
void printX(MyClass obj) { // 友元函數的定義
cout << obj.x << endl; // 可以直接訪問類的私有成員x
}

在上面的例子中,printX是一個友元函數,它可以直接訪問類的私有成員x。通過創建一個對象或者指針來調用這個友元函數,可以打印出x的值。

MyClass obj;
obj.setX(5);
printX(obj);

區別:

  1. 成員函數是類的成員,它可以直接訪問類的私有成員,而友元函數不是類的成員,它需要在類內部進行聲明并在類外部進行定義才能訪問類的私有成員。

  2. 成員函數可以通過對象或者指針來調用,而友元函數也可以通過對象或者指針來調用。

  3. 成員函數可以被繼承,而友元函數不可以被繼承。

  4. 成員函數在編譯時會進行類型檢查,而友元函數不會進行類型檢查。

0
屯门区| 磴口县| 徐州市| 高邮市| 新安县| 盐边县| 铜川市| 江津市| 乐山市| 青阳县| 荣成市| 正蓝旗| 晋宁县| 襄樊市| 涞源县| 普格县| 阿尔山市| 洛隆县| 余干县| 沧州市| 错那县| 屯留县| 三亚市| 德化县| 四子王旗| 新化县| 安新县| 东城区| 济南市| 高碑店市| 昭觉县| 类乌齐县| 钟山县| 安吉县| 石屏县| 江永县| 遂平县| 突泉县| 渝北区| 兴化市| 纳雍县|