C++ 友元函数与虚函数的区别2024 年 8 月 29 日 | 5 分钟阅读 在本文中,我们将讨论 友元函数 和 虚函数 之间的区别。但在讨论它们的区别之前,我们必须了解 C++ 中的友元函数和虚函数。 什么是友元函数?在 C++ 编程语言中,友元函数 是一个不属于某个类但可以访问其保护和私有元素的函数。这意味着友元函数可以像成员函数一样访问类的私有和保护成员,尽管它实际上不属于该类。友元函数使用类声明中的 friend 关键字声明。 友元函数的特点友元函数 有几个特点。友元函数的一些主要特点如下: 1. 非类成员 与普通成员函数不同,友元函数使用 friend 关键字在类内部声明;它不属于类本身。 2. 访问私有和保护成员 通过克服封装障碍,友元函数可以访问它所属类的私有或保护成员。 3. 语法 尽管友元函数声明在类作用域之外声明,但它通常包含在类声明中。 4. 用法 在函数必须访问类的私有成员而又实际上不属于该类的情况下非常实用。 什么是虚函数?C++ 中通过使用虚函数实现运行时多态性。它允许在运行时从基类指针或对派生类对象的引用调用相关方法。 虚函数的特点虚函数 有几个特点。虚函数的一些主要特点如下: 1. 类成员 虚函数是使用 virtual 关键字定义的类成员。它旨在供派生类重写。 2. 多态性和继承 在类层次结构中,虚函数用于基类将函数指定为虚函数,而派生类独立实现它。它使多态行为成为可能。 3. 晚期绑定 晚期绑定 允许在运行时根据所引用对象的类型灵活地选择合适的函数实现,因为要调用的实际函数是在运行时确定的。 4. 语法 virtual 关键字用于标识虚函数,它们在基类中声明。之后,派生类使用 override 关键字来重写此函数。 5. 用法 它可应用于派生类可以修改其行为且基类必须提供通用接口的情况。 示例我们来看一个例子来说明 C++ 中的友元函数和虚函数 输出 Using virtual function: Drawing a circle. Drawing a generic shape with 4 sides. Using the friend function: Number of sides: 0 说明
虚函数和友元函数的区别虚函数和友元函数之间有几个区别。虚函数和友元函数之间的一些主要区别如下: 1. 作用域友元函数: 尽管友元函数在类中声明,但它不是类的成员。它可以访问它所属类的私有和保护成员。 虚函数: 虚函数是可以在派生类中重写的类成员函数。它有助于实现 运行时多态性。 2. 访问控制友元函数: 作为类的友元,它可以访问该类的私有和保护成员。 虚函数: 此函数可以在类的保护、私有或公共部分声明;但是,派生类的重写函数需要具有相同的访问级别。 3. 继承友元函数: 派生类不继承它。它只是一个独立的函数,类的私有成员可以访问它。 虚函数: 派生类可以重写虚函数以提供自己的实现。它被派生类继承。 4. 调用友元函数: 它不是用类对象调用的。相反,它像任何其他函数一样被调用。 虚函数: 这种函数使用指向基类的指针或引用调用;在运行时,它所引用或指向的对象的类型决定了将执行哪个函数。 5. 多态性友元函数: 由于它不是类层次结构的一部分,因此它不参与多态性。 虚函数: 它通过允许程序在运行时根据对象的真实类型调用正确的函数来使多态性成为可能。 结论总之,友元函数 旨在允许非成员函数访问类的私有和保护成员,而 虚函数 旨在允许派生类提供自己的实现以实现多态性。在 C++ 编程中,它们有多种用途并在各种上下文中实现。 |
在本文中,我们将讨论 C/C++ 中的 strxfrm() 函数及其语法和示例。strxfrm() 函数是什么?strxfrm() 函数是 C/C++ 库中的一个函数。它用于在转换源字符串中的字符后将其插入目标字符串...
阅读 2 分钟
C++ 是一种强大而灵活的编程语言,它提供了大量的运算符来修改数据和执行各种操作。在这些运算符中,有一些所谓的“特殊运算符”,它们的功能特殊,并且对于更复杂的编程任务是必需的。在此...
5 分钟阅读
矩阵是基本的数学结构,在计算机科学、工程学、物理学和其他学科中都有应用。矩阵的法线和迹是两个重要的特征。本文将解释矩阵的法线和迹是什么,以及一个计算它们的 C++ 程序。理解法线...
阅读 4 分钟
如果你处理视觉效果,编写游戏需要扎实的编程技能以及对 OpenGL 和 DirectX 等几个 API 的深刻理解。对于 C++ 程序员来说,有几个游戏引擎可以简化这个过程。必需的头文件...
阅读 4 分钟
C++ 具有强大的功能,是程序员或开发人员使用的优秀编程语言。但是,在 C++ 中,<ratio> 头文件提供了一系列模板类,用于表示有理数并在算术过程中实现精确计算。Ratio_less_equal() 是其中的一个重要函数...
阅读 3 分钟
在 C++ 中,面向对象编程 (OOP) 是一种使用类和对象来构造代码的计算机编程模型。它促进了模块化、可重用性和可伸缩性。C++ 是最广泛使用的 OOP 语言之一,并支持一些 OOP 概念,例如...
7 分钟阅读
概述 在 C++ 中,无序集合(unordered set)是一种容器数据结构,用于存储元素而不考虑其顺序。本文涵盖了广泛的主题,包括什么是无序集合,如何在 C++ 中创建和初始化无序集合,以及它……
阅读 6 分钟
在本文中,我们将讨论 C++ 中的 3 向比较运算符(飞船运算符)及其语法和示例。什么是 3 向比较运算符(飞船运算符)?“飞船运算符”或“三向比较运算符”,用 <=> 符号表示。使用此运算符,可以比较两个值...
阅读 3 分钟
C++ 中的 Vector 是一种动态数组式容器,用于存储相同类型元素的集合。与数组不同,Vector 的大小可以动态增长或缩小,使其成为存储和操作数据的方便高效的数据结构。Vector 是……
阅读 4 分钟
在本文中,我们将讨论如何使用不同方法在 C++ 中检测并删除链表中的循环。创建一个名为 detectAndRemoveLoop() 的函数,该函数验证给定的链表是否包含循环。之后,如果存在循环,它会删除循环并返回 true...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India