返回顶部
首页 > 资讯 > 精选 >友元函数对类的继承性有什么影响?
  • 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://lsjlt.com/news/604978.html(转载时请注明来源链接)

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

猜你喜欢
  • 友元函数对类的继承性有什么影响?
    友元函数的继承性当子类继承具有友元函数的类时:子类无法继承友元函数。父类的友元函数可以访问子类的私有成员。子类的友元函数无法访问父类的私有成员。 友元函数对类的继承性影响 前言 友元函...
    99+
    2024-04-17
    类继承 友元函数 access c++ 作用域
  • 友元函数对类的封装性有什么影响?
    友元函数对类的封装性有影响,包括降低封装性、增加攻击面和提高灵活性。它可以访问类的私有数据,如示例中定义为 person 类的友元的 printperson 函数可以访问 person ...
    99+
    2024-04-17
    友元函数 类的封装性 敏感数据 封装性
  • C++ 友元函数详解:友元函数在多继承中的作用?
    友元函数允许非成员函数访问私有成员,并在多继承中发挥作用,允许派生类函数访问基类的私有成员。 C++ 友元函数详解:友元函数在多继承中的作用 友元函数介绍 友元函数是一种特殊函数,被赋...
    99+
    2024-04-29
    多继承 友元函数 c++
  • C++ 函数重载在多继承中的影响是什么?
    在多继承中,派生类中的函数重载会导致隐藏或覆盖基类函数,具体取决于签名是否相同。钻石继承结构可能会导致歧义,因为派生类不知道要调用哪个基类函数。可以使用显式作用域解析符、类型转换或虚继承...
    99+
    2024-04-26
    函数重载 多继承 c++ 作用域 编译错误
  • PHP7函数类型限定对性能有没有影响
    这篇文章主要介绍PHP7函数类型限定对性能有没有影响,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7函数类型限定(1) 介绍函数参数类型限定(包括返回值、成员属性)从PHP5开始支持的,但是支持的类型不多,PH...
    99+
    2023-06-29
  • PHP 函数版本兼容性对性能有什么影响?
    php 函数版本兼容性影响性能。忽略版本兼容性会导致效率低。较新版本的函数通常采用优化后的算法,可显着提高性能。在使用函数时,考虑其版本兼容性,避免使用已弃用的函数。采用最新版本的函数,...
    99+
    2024-04-25
    性能 php
  • C++ 函数可以声明为友元函数吗?友元函数的特性是什么?
    是的,c++++ 函数可以声明为友元函数。友元函数具有以下特性:可以访问类的私有和受保护成员。不能直接访问类的 this 指针。可以定义在类的作用域之外。不是类的成员函数,不属于类的接口...
    99+
    2024-04-19
    c++ 友元函数 作用域
  • PHP 函数新特性对现有代码的影响是什么?
    php 7.0 中引入的函数新特性对现有代码的影响:返回类型声明确保函数返回预期类型,提高安全性。标量类型提示帮助检测类型不匹配错误,減少错误。返回类型声明避免函数体内重复类型声明,減少...
    99+
    2024-05-04
    函数 php
  • 函数式编程对golang有什么影响?
    函数式编程在 go 中的使用显着提高了代码的可维护性、并发性和可测试性。它强调使用不可变数据和函数,并通过一等函数、闭包和 goroutine 等特性在 go 中实现。函数式编程原则包括...
    99+
    2024-05-02
    golang 函数式编程 作用域
  • 三个flex属性对元素的影响是什么
    本篇内容主要讲解“三个flex属性对元素的影响是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“三个flex属性对元素的影响是什么”吧!首先我们需要了解,fl...
    99+
    2024-04-02
  • python继承的基类属性是什么
    这篇文章将为大家详细讲解有关python继承的基类属性是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • 覆盖率低对golang函数有什么影响?
    覆盖率低会增加错误风险并阻碍集成测试。具体影响包括:难以发现错误:未经过测试的代码行更容易出现未检测到的错误。集成测试困难:依赖未覆盖函数的代码可能导致集成测试失败。代码重构风险:重构未...
    99+
    2024-04-26
    函数 golang 覆盖率
  • C++ 函数对程序性能的影响
    函数调用会引入性能开销,包括调用指令时间、参数传递、栈帧分配和函数入口/退出。通过内联函数、减少参数传递、优化递归函数和使用非虚拟函数,可以优化函数调用的性能,提高程序整体效率。 C+...
    99+
    2024-04-11
    c++ 程序性能
  • JavaScript数据类型对函数式编程的影响是什么
    这篇文章主要介绍了JavaScript数据类型对函数式编程的影响是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript数据类型对函数式编程的影响是什么文章都会有所收获,下面我们一起来看看吧。J...
    99+
    2023-07-05
  • C++ 函数对程序性能有哪些影响?
    函数对 c++++ 程序性能的影响包括函数调用开销、局部变量和对象分配开销:函数调用开销:包括堆栈帧分配、参数传递和控制权转移,对小函数影响显著。局部变量和对象分配开销:大量局部变量或对...
    99+
    2024-04-12
    性能 c++ 堆栈溢出 字符串数组
  • JAVA异常对性能有什么影响
    这篇文章主要介绍“JAVA异常对性能有什么影响”,在日常操作中,相信很多人在JAVA异常对性能有什么影响问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JAVA异常对性能有什么影响”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • goroutine对golang函数的执行流程有什么影响?
    go 中的 goroutine 实现并发,可让函数并发执行,通过通道实现通信,并提供对并发的控制。goroutine 的使用可提升程序性能,尤其适用于处理阻塞任务。示例代码展示了 gor...
    99+
    2024-05-04
    golang
  • C++类和对象中友元函数怎么使用
    这篇文章主要介绍“C++类和对象中友元函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类和对象中友元函数怎么使用”文章能帮助大家解决问题。友元用到关键字 friend浅解概念举一个非...
    99+
    2023-07-02
  • C++ 内联函数对程序性能有何影响?
    内联函数通过将函数代码嵌入调用点提升程序性能,具有减少函数调用开销、提高局部性、优化循环等优点。但它也有缺点,如增加代码大小、编译时间变长、潜在的错误传播。实战中,内联较小函数可显著提升...
    99+
    2024-04-16
    c++ 内联函数
  • Oracle升级对现有NVARCHAR2数据类型有什么影响
    在Oracle数据库中,NVARCHAR2数据类型是一种可变长度的Unicode字符数据类型,用于存储Unicode字符数据。当进行...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作