C++ 中的函数覆盖解释

已发表: 2022-11-09

目录

什么是函数?

函数是属于代码的一块,用于在程序中执行规定的任务。 重要的是拥有有关继承的第一手知识来学习函数覆盖继承实现是这个函数的任务。 C++ 函数是为执行任务而组合在一起的语句集合。 所有程序都有一个 main() 函数,并且特定程序有附加函数。 函数声明将函数名、返回类型和参数发送给编译器,以通过函数定义确定函数体。 函数可以是过程、方法或子例程,所有 C++ 函数都由标头和主体组成。

C++ 函数的语法:-

return_type function_name(参数列表) {

功能体

}

组件:-

  • 返回类型 -这表示函数的返回值类型。
  • 函数名称 -这表示构成函数签名和参数列表的函数名称。
  • 参数- 这是函数返回值的占位符。 调用函数时,传递给参数的值称为实际参数。
  • 函数体 - 函数体包含定义函数任务的语句列表。

如何调用函数

必须在使用前调用或调用函数,然后将控制权转移给它以执行必要的任务。 在此之后,return 语句将控制权交还给主程序。 必须传递参数和函数名才能调用函数。 参数可以在调用时以多种方式传递给函数。 来电类型如下:-

  • 按值调用
  • 通过引用调用
  • 指针调用

从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

C++ 中的函数覆盖

C++ 覆盖是一个想法,通过它定义给定相同名称的函数。 重写中的基类函数在派生类中重新定义,它重写了基类函数。 实现运行时多态也可以定义为函数覆盖。 在这里,程序的运行时覆盖了函数。

函数覆盖允许程序员使用在其父类中找到的子类中的函数。 结果,子类继承了父类中的每个数据成员和成员函数。 要覆盖任何子类功能,您必须实现函数覆盖。 函数覆盖是指在子类中制作一个新版本的父类函数。

在 C++ 中实现函数覆盖的语法

当使用派生类中的对象调用在基类和派生类中定义的相同函数时,它会执行派生类函数。 这是 C++ 中的函数覆盖。

下面是在 C++ 中实现函数覆盖的最常用语法:

// 用于演示函数覆盖的 C++ 程序

#include <iostream>

使用命名空间标准;

类基{

上市:

无效打印(){

cout << “基本函数” << endl;

}

};

派生类:公共基础{

上市:

无效打印(){

cout << “派生函数” << endl;

}

};

int main() {

派生派生1;

派生1.print();

返回0;

}

输出

派生函数

这重新定义了派生类中的基类函数。 因此,返回类型、function_parameters 和 function_name 必须相同才能实现函数覆盖。

软件工程的热门课程和文章

热门节目
软件开发执行 PG 计划 - IIIT B 区块链证书课程 - PURDUE 网络安全证书计划 - PURDUE 计算机科学理学硕士 - IIIT B
其他热门文章
2021-22年美国云工程师薪水 美国 AWS 解决方案架构师薪水 美国后端开发人员工资 美国前端开发人员薪水
美国网络开发人员的薪水 2022 年 Scrum Master 面试问题 如何在 2022 年开始网络安全职业? 工程专业学生在美国的职业选择

函数覆盖在 C++ 中的工作原理

OOP 必须允许派生类继承父类的特性。 函数重写使程序员能够在特定派生类中重写类中的任何功能。 当子类需要其功能变体时,这尤其有用。

下面是一个简单的 C++ 函数覆盖示例,以便您更好地理解:

#include <iostream>

使用命名空间标准;

类父类

{

上市:

虚空打印()

{

cout << “\n这是 print() 方法”

“基类”;

}

};

类派生类:公共父类

{

上市:

// 函数覆盖——新定义

// 基类的打印方法

无效打印()

{

cout << “\n这是 print() 方法”

”派生类”;

}

};

// 驱动代码

主函数()

{

派生类对象;

obj.print();

}

访问 C++ 中的重写函数

范围解析运算符用于访问 C++ 中基类的重写函数。 也可以通过使用基类指针指向派生类的对象,然后从指针调用函数来访问被覆盖的函数。

// 访问重写函数的 C++ 程序

// 在 main() 中使用范围解析运算符 ::

#include <iostream>

使用命名空间标准;

类基{

上市:

无效打印(){

cout << “基本函数” << endl;

}

};

派生类:公共基础{

上市:

无效打印(){

cout << “派生函数” << endl;

}

};

int main() {

派生派生1,派生2;

派生1.print();

// 访问 Base 类的 print() 函数

派生2.Base::print();

返回0;

}

输出

派生函数

基本功能

语法中的语句; 派生2.Base::print(); 可以访问 Base 类的 print() 函数。

从派生类调用重写函数

您可以使用继承来更改函数的行为。 但是,有时,您不需要更改或替换基类/父类功能。 相反,必须添加更多功能。

下面是使用派生类中的调用覆盖函数的示例。

// C++ 程序调用被覆盖的函数

// 来自派生类的成员函数

#include <iostream>

使用命名空间标准;

类基{

上市:

无效打印(){

cout << “基本函数” << endl;

}

};

派生类:公共基础{

上市:

无效打印(){

cout << “派生函数” << endl;

// 调用被覆盖的函数

基::打印();

}

};

int main() {

派生派生1;

派生1.print();

返回0;

}

输出

派生函数

基本功能

在这个程序中,已在 Derived 类中调用了被覆盖的函数。

派生类:公共基础{

上市:

无效打印(){

cout << “派生函数” << endl;

基::打印();

}

};

代码 Base::print();,调用 Derived 类中的重写函数。

函数重载与函数覆盖

您可以在编译时实现函数重载,通常在派生类和基类中完成。 它通过更改每个函数的签名(如数据类型或参数的返回类型)来提供多个函数定义。

另一方面,函数覆盖可以在运行时实现。 重写中的基类在派生类中重新定义,具有相同的参数和相同的返回类型。 让我们找出哪些其他功能使这两个功能不同。

覆盖重载
遗产需要类继承不需要类继承
函数签名签名的类型或参数数量不同。 函数签名保持不变
功能范围功能范围不同拥有相同的范围
函数行为当派生类函数的执行方式与基类函数不同或具有附加功能时,这是必需的。 当具有相同名称的函数根据给定的参数具有不同的行为时需要。

结论

C++ 中的函数覆盖有助于节省内存空间并保持任何代码的可读性和一致性。 它还有助于使代码易于重用。 不用说,如果您在编程中看到自己的未来,那么有关函数覆盖的知识是一项重要的技能。

如果您想加入可靠且优质的课程以开始您在该领域的职业生涯,您可以在 upGrad 上注册upGrad 的计算机科学理学硕士。 该计划的一些主要亮点如下:-

  • 学习 MERN Stack、微服务、JavaScript 等。
  • Cloud Labs 上的有益学习
  • 试用 Netflix、LinkedIn、Facebook 等上使用的工具。
  • 熟练掌握 10 多种编程工具和语言
  • 24/7 学生支持

函数覆盖是如何发生的?

函数 C++ 覆盖通过继承发生,即当一个类继承另一个类时。 当派生类和基类拥有具有相同返回类型、名称和参数列表的成员函数时,称为函数覆盖。

C ++中的函数重载和函数覆盖有什么区别?

当函数在基类和派生类中拥有相同的原型时,就会发生函数覆盖。 当一个类中存在多个具有相似名称的函数时,会执行函数重载。

C++中函数重载的特点是什么?

C++ 中的函数重载主要用于提高代码的可读性。 程序员使用它,因此他们不必记住大量的函数名称。 具有多个函数、不同参数且名称相同的类称为重载。