广告
返回顶部
首页 > 资讯 > 精选 >友元函数对类的继承性有什么影响?
  • 783
分享到

友元函数对类的继承性有什么影响?

类继承友元函数accessc++作用域 2024-04-17 09:04:00 783人浏览 薄情痞子
摘要

友元函数的继承性当子类继承具有友元函数的类时:子类无法继承友元函数。父类的友元函数可以访问子类的私有成员。子类的友元函数无法访问父类的私有成员。 友元函数对类的继承性影响 前言 友元函

友元函数的继承性当子类继承具有友元函数的类时:子类无法继承友元函数。父类的友元函数可以访问子类的私有成员。子类的友元函数无法访问父类的私有成员。

友元函数对类的继承性影响

前言

友元函数是一种特殊的 c++ 函数,它可以在类的作用域之外访问该类的私有成员。当涉及到类的继承时,理解友元函数的行为至关重要。

友元函数与继承

当一个子类继承一个有友元函数的类时,以下规则适用:

  • 子类无法继承友元函数:友元函数是与特定类相关联的。子类无法继承父类的友元函数。
  • 父类的友元函数可以访问子类的私有成员:如果父类和子类相互了解(即,父类是子类的基类或子类是父类的派生类),则父类的友元函数可以访问子类的私有成员。
  • 子类的友元函数无法访问父类的私有成员:相反,子类的友元函数无法访问父类的私有成员,即使父类和子类相互了解。

实战案例

考虑以下示例代码:

#include <iOStream>

class Base {
  friend void print(Base& b);  // 父类友元函数
private:
  int x;
};

class Derived : public Base {
  friend void <a style='color:#f60; text-decoration:underline;' href="https://www.PHP.cn/zt/16380.html" target="_blank">access</a>(Derived& d);  // 子类友元函数
private:
  int y;
};

void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x

void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y

int main() {
  Base b;
  b.x = 10;
  print(b);  // 输出:10

  Derived d;
  d.x = 20;
  d.y = 30;
  access(d);  // 输出:20 30
  print(d);  // 输出:20
}

在这个示例中:

  • 父类 Base 有一个友元函数 print(),它可以访问 x 私有成员。
  • 子类 Derived 有一个友元函数 access(),它可以访问父类私有成员 x
  • 子类 Derived 的对象 d 可以被父类 Base 友元函数 print() 访问,但是无法访问父类的私有成员 x

以上就是友元函数对类的继承性有什么影响?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 友元函数对类的继承性有什么影响?

本文链接: https://www.lsjlt.com/news/604978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript数据类型对函数式编程的影响是什么
    这篇文章主要介绍了JavaScript数据类型对函数式编程的影响是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript数据类型对函数式编程的影响是什么文章都会有所收获,下面我们一起来看看吧。J...
    99+
    2023-07-05
  • Git对Java中的数据类型存储有什么影响?
    Git作为一款分布式版本控制工具,在Java开发中使用非常广泛。Java是一门面向对象编程语言,数据类型的存储对于程序的正确性和性能有着非常重要的影响。那么,在使用Git进行版本控制的同时,它对Java中的数据类型存储有哪些影响呢?本文将...
    99+
    2023-09-18
    git 数据类型 存储
  • GO 语言中的数据类型对自然语言处理有什么影响?
    自然语言处理(NLP)是人工智能领域中的重要研究方向之一,它涉及到语言模型、词向量、句法分析、情感分析等多个方面。在 NLP 中,数据类型对于算法的效率和精度有着极为重要的影响,而 GO 语言作为一门具有高效性和简洁性的编程语言,对于 N...
    99+
    2023-10-30
    数据类型 自然语言处理 load
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作