您的位置:首页 > 教程笔记 > 综合教程

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

2024-04-29 16:04:21 综合教程 122

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

C++ 友元函数详解

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

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

友元函数的语法

友元函数的语法如下:

friend 返回类型 函数名(参数列表);

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

friend int getPrivateData(MyClass& object);

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

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

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

实战案例

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

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

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

friend int getPrivateData(MyClass& object) {
    return object.x;
}

使用友元函数

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

int main() {
    MyClass object;
    object.setX(10);
    int privateData = getPrivateData(object);
    cout << "Private data: " << privateData << endl;
    return 0;
}

运行此代码将输出:

Private data: 10

相关推荐

  • 内联函数在并行编程中的作用

    内联函数在并行编程中的作用

    内联函数在并行编程中用于消除线程切换开销,从而提高性能。内联函数可通过将其调用替换为函数体代码来消除函数开销。语法:使用 inline 关键字声明内联函数。注意事项:过度内联函数会引起代码膨胀,导致编

    综合教程 2024-04-29 16:04:20 64
  • golang函数的异步编程实践

    golang函数的异步编程实践

    异步编程允许在不阻塞主线程的情况下执行任务。go 语言使用轻量级线程 goroutine 和通信管道 channel 实现异步编程。goroutine 通过 go 关键字创建,而 channel 用于

    综合教程 2024-04-29 16:04:18 52
  • c语言中parse函数怎么用

    c语言中parse函数怎么用

    C 语言中 函数的使用 函数是一个用于解析字符串的 C 语言函数,它将字符串解析为一系列令牌。令牌是字符串中的单词、短语或其他由空格或其他分隔符分隔的单元。使用方法: 函数的语法如下: c

    综合教程 2024-04-29 16:04:17 125
  • c++中cin.get  ch函数的功能

    c++中cin.get ch函数的功能

    c++kquotecin.get(ch) 函数的功能是读取标准输入中的单个字符并存储在字符变量 ch 中。1. 从标准输入中读取一个字符并存储在 ch 中。2. 返回读取的字符的 ascii 码。3

    综合教程 2024-04-29 16:04:06 147
  • golang函数的错误处理最佳实践

    golang函数的错误处理最佳实践

    golang 函数错误处理最佳实践包括:使用 error 变量接收错误;检查 nil 值以确定是否存在错误;利用 errors 包创建自定义错误消息;运用 defer 恢复机制处理恐慌;实战案例展示了

    综合教程 2024-04-29 16:04:04 33