C++ フレンド関数の詳細説明: フレンド関数とグローバル関数の違いは何ですか?

WBOY
リリース: 2024-04-28 21:42:02
オリジナル
1155 人が閲覧しました

友元函数可访问类私有和受保护数据成员,而全局函数不行,友元函数在类声明中声明,全局函数在类外声明,使用 friend 关键字声明友元函数,用 extern 关键字声明全局函数。友元函数通过声明方式获得访问类成员变量的权限,如通过声明一个友元函数 getPrivateData 可以访问 MyClass 类私有变量 x。

C++ 友元函数详解:友元函数和全局函数的区别?

C++ 友元函数详解

友元函数和全局函数的区别

在 C++ 中,友元函数是一种特殊的函数,它可以访问类成员函数中声明的私有和受保护的数据成员。相比之下,全局函数在类外声明,无法访问私有和受保护的数据成员。

友元函数的语法

友元函数的语法如下:

friend 返回类型 函数名(参数列表);
ログイン後にコピー

例如,声明一个可以访问 MyClass 中私有数据成员的友元函数:

friend int getPrivateData(MyClass& object);
ログイン後にコピー

友元函数和全局函数的区别

友元函数和全局函数的主要区别如下:

  • 访问范围:友元函数可以访问类中的私有和受保护的数据成员,而全局函数不能。
  • 作用域:友元函数可以在类的声明中声明,而全局函数在类外声明。
  • 声明方式:友元函数使用 friend 关键字声明,而全局函数使用 extern 关键字声明。

实战案例

考虑一个包含私有成员变量 xMyClass 类:

class MyClass {
private:
    int x;
public:
    int getX();
    void setX(int value);
};
ログイン後にコピー

要访问 MyClass 的私有数据成员 x,我们可以声明一个友元函数:

friend int getPrivateData(MyClass& object) {
    return object.x;
}
ログイン後にコピー

使用友元函数

我们可以使用友元函数来访问 MyClass 的私有数据成员:

int main() {
    MyClass object;
    object.setX(10);
    int privateData = getPrivateData(object);
    cout << "Private data: " << privateData << endl;
    return 0;
}
ログイン後にコピー

运行此代码将输出:

Private data: 10
ログイン後にコピー

以上がC++ フレンド関数の詳細説明: フレンド関数とグローバル関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート