C++ 友元函数的声明规则有哪些?

友元函数声明规则如下:声明必须位于类的外部。可以声明为成员函数或全局函数。可通过指针或引用传递类的对象。

C++ 友元函数的声明规则有哪些?

C++ 友元函数的声明规则

友元函数声明

友元函数是一种特殊的函数,可以访问类的私有成员。要在 C++ 中声明友元函数,使用 friend 关键字,如下所示:

立即学习“C++免费学习笔记(深入)”;

// 声明 MyClass 类的友元函数 printInfo()friend void printInfo(const MyClass& obj);

登录后复制

声明规则

以下是在 C++ 中声明友元函数的规则:

友元函数的声明必须位于类的外部。友元函数可以声明为成员函数(带作用域解析符)或全局函数(不带作用域解析符)。可以通过指针或引用来传递类的对象。

实战案例

考虑以下 MyClass 类,它有私有成员变量 _data:

class MyClass {private:    int _data;public:    // ...};

登录后复制

我们可以定义一个友元函数 printInfo() 来访问 _data:

// 声明 printInfo() 为 MyClass 的友元函数friend void printInfo(const MyClass& obj) {    std::cout 

在主函数中,我们可以实例化 MyClass 对象并调用友元函数来打印私有数据:

int main() {    MyClass obj;    obj._data = 42;  // 访问私有成员(仅在友元函数中允许)    printInfo(obj);  // 调用友元函数    return 0;}

登录后复制

输出:

Data: 42

登录后复制

以上就是C++ 友元函数的声明规则有哪些?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2576838.html

(0)
上一篇 2025年3月6日 12:47:50
下一篇 2025年3月6日 12:47:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 友元函数可以修改类中的成员数据吗?

    是的,友元函数可以通过声明为 friend 并具有对类成员的直接访问权限来修改类中的成员数据。这可用于实现流插入和流提取运算符等实战案例。 友元函数可以修改类中的成员数据吗? 引言 友元函数是一种特殊的函数,它可以访问类中的私有成员。这给了…

    2025年3月6日
    000
  • C++ 函数重载和函数内联

    函数重载和函数内联函数重载允许使用相同名称创建多个函数,但参数列表不同,针对不同输入类型编写特定代码。函数内联则是一种编译器优化,将函数代码直接插入调用点,提高程序速度。 C++ 函数重载和函数内联 函数重载 函数重载允许您创建具有相同名称…

    2025年3月6日
    200
  • C++ 函数异常处理与错误处理有何不同?

    异常处理用于管理程序中意外发生的错误,使用 try-catch 语法,并可恢复;错误处理管理不可预期的外部错误,使用 if 语句,不可恢复,程序可能终止。 C++ 函数异常处理与错误处理对比 异常处理 异常处理用于管理程序中可能发生的意外状…

    2025年3月6日
    200
  • C++ 函数异常处理中的 throw 和 rethrow 语句的作用是什么?

    异常处理中的 throw 语句用于抛出异常,rethrow 语句用于在捕获的异常中再次抛出相同的异常。throw 语句的语法为:throw exception_object; rethrow 语句的语法为:rethrow; throw 和 …

    2025年3月6日
    200
  • 面向对象编程中 C++ 内联函数的应用

    内联函数是在 oop 中提高方法调用效率的有用工具,因为它们在编译时展开,避免了函数调用的开销。声明内联函数时,在函数定义前添加 inline 关键字即可。内联函数的优点包括提高性能、减小代码大小和提高可读性。但在使用时,需注意潜在的代码膨…

    2025年3月6日
    200
  • C++ 静态函数的性能考虑有哪些?

    静态函数性能考虑如下:代码大小:静态函数通常更小,因为不包含成员变量。内存占用:不属于任何特定对象,不占用对象内存。调用开销:更低,无需通过对象指针或引用调用。多线程安全:通常线程安全,因为不依赖于类实例。 C++ 静态函数的性能考虑 静态…

    2025年3月6日
    200
  • C++ 静态函数的定义是什么?

    静态函数是类中不属于任何对象的独立函数,用于封装类级操作和全局访问。它们的特点包括:1. 不依赖于对象;2. 全局可见性;3. 不可继承和重写。静态函数可用于优化性能和简化对类级功能的访问,如访问全局变量或执行类级操作。 C++ 静态函数详…

    2025年3月6日
    200
  • C++ 友元函数与重载的关系

    是的,友元函数可以被重载,与其他函数一样,重载的友元函数必须具有不同的参数列表,如示例中的 vector3d 类,它具有重载的友元函数 operator+() 和 operator-(),允许对 vector3d 对象应用加法和减法运算符。…

    2025年3月6日
    200
  • C++ 内联函数对程序性能有何影响?

    内联函数通过将函数代码嵌入调用点提升程序性能,具有减少函数调用开销、提高局部性、优化循环等优点。但它也有缺点,如增加代码大小、编译时间变长、潜在的错误传播。实战中,内联较小函数可显著提升性能。使用指南包括仅内联体积较小的函数、注意循环内内联…

    2025年3月6日
    200
  • C++ 静态函数与类方法有什么区别?

    c++++ 中静态函数与类方法的区别:声明方式:静态函数使用 static 关键字,类方法是类成员函数。访问方式:静态函数通过类名或作用域解析运算符访问,类方法通过类对象成员访问符号访问。数据成员访问:静态函数不能访问类数据成员,类方法可以…

    2025年3月6日
    200

发表回复

登录后才能评论