91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
南雄市| 盐边县| 宜宾县| 白玉县| 高碑店市| 金溪县| 罗定市| 五峰| 黑河市| 龙岩市| 诸城市| 灵台县| 台南市| 商南县| 临夏县| 时尚| 若羌县| 拜城县| 呈贡县| 宁德市| 兴城市| 宾川县| 花垣县| 张家口市| 普格县| 洪泽县| 西畴县| 鱼台县| 琼结县| 民权县| 女性| 金湖县| 遂平县| 河北区| 浮梁县| 湘阴县| 德格县| 保山市| 定兴县| 南涧| 满洲里市|