当前位置: 首页 > news >正文

宁波如何建网站/百度收录提交工具

宁波如何建网站,百度收录提交工具,网页版梦幻西游哪个职业厉害,网站内容页收录目录 一、什么是函数重写? 二、用法与代码示例 三、为什么要重写函数? 实现多态性: 定制化行为: 接口实现: 四、函数重写的条件 五、注意事项 一、什么是函数重写? 在 C 中,函数重写是…

目录

一、什么是函数重写?

二、用法与代码示例

三、为什么要重写函数?

实现多态性:

定制化行为:

接口实现:

四、函数重写的条件

五、注意事项

一、什么是函数重写?

在 C++ 中,函数重写是指在派生类(子类)中重新定义基类(父类)中声明为 virtual 的虚函数,以提供子类自己的实现。重写是实现**运行时多态性(Runtime Polymorphism)**的关键机制,允许通过基类指针或引用调用子类的具体实现。

简单来说:

  • 基类定义了一个虚函数(用 virtual 关键字标记)。

  • 子类对这个函数进行重新实现,替换基类的默认行为。

  • 当通过基类指针或引用调用该函数时,实际执行的是子类的版本。

二、用法与代码示例

要实现函数重写,需要以下步骤:

  1. 在基类中将函数声明为 virtual。

  2. 在子类中重新定义该函数,函数签名必须与基类一致。

  3. 可选:在子类中使用 override 关键字(C++11 引入)明确表示重写。

示例 1:基本重写

#include <iostream>
using namespace std;class Base {
public:virtual void display() { // 声明为虚函数cout << "Base class display" << endl;}
};class Derived : public Base {
public:void display() override { // 重写基类的虚函数cout << "Derived class display" << endl;}
};int main() {Base* ptr = new Derived(); // 基类指针指向派生类对象ptr->display(); // 调用的是 Derived 的版本delete ptr;return 0;
}

输出: 

Derived class display

示例 2:多态性与多层继承 

#include <iostream>
using namespace std;class Animal {
public:virtual void speak() {cout << "Some generic sound" << endl;}
};class Dog : public Animal {
public:void speak() override {cout << "Woof!" << endl;}
};class Puppy : public Dog {
public:void speak() override {cout << "Yip!" << endl;}
};int main() {Animal* a1 = new Dog();Animal* a2 = new Puppy();a1->speak(); // 输出 "Woof!"a2->speak(); // 输出 "Yip!"delete a1;delete a2;return 0;
}

输出: 

Woof!
Yip!

三、为什么要重写函数?

  1. 实现多态性:

    • 重写是 C++ 中运行时多态的核心。通过基类指针或引用调用虚函数时,可以动态决定调用哪个类的实现。

    • 这在需要处理一组相关但行为不同的对象时非常有用(如上面的 Animal 示例)。

  2. 定制化行为:

    • 子类可能需要改变基类的默认行为以适应特定需求。例如,Dog 的 speak() 和 Puppy 的 speak() 有不同的表现。

  3. 接口实现:

    • 如果基类是抽象类(包含纯虚函数 virtual void func() = 0;),子类必须重写这些函数以提供具体实现,否则无法实例化。

四、函数重写的条件

要正确重写基类的虚函数,必须满足以下条件:

  1. 基类函数是虚数:                                                                                                                            必须用 virtual 关键字声明,否则子类的版本只是隐藏(Hide)而不是重写。

  2. 函数签名一致:

    • 函数名、参数列表(数量和类型)、返回类型必须与基类一致。

    • 例外:C++ 支持协变返回类型(Covariant Return Type),即返回类型可以是基类返回类型的派生类。

  3. 访问权限:子类的重写函数不能降低基类的访问权限(例如基类是 public,子类不能改为 private)。

五、注意事项

  1. 不要混淆函数重写与函数重载。成员函数的重写是指在派生类中提供函数新的定义。 函数重载是指用不同签名创建函数的多个版本。

  2. 在重写一个基类的重载成员函数时,基类成员函数的所有重载版本都会被覆盖掉,意味着访问其他版本的成员函数的唯一方式是显式的调用基类成员函数。因此,如果要重写重载成员函数,最好重写重载函数的每个版本。

http://www.whsansanxincailiao.cn/news/31956708.html

相关文章:

  • 色系网站/沧州网站建设
  • 老外做的汉语网站/中国突然宣布一重磅消息
  • 查询网站备案进度/黄页网络的推广网站有哪些类型
  • 做网站需要的参考文献/cnzz数据统计
  • 专门做学校政府的网站/厦门网站建设平台
  • 成都市城乡建设委员会的网站/营销策划运营培训机构
  • 虚拟空间网站回收池有什么作用/广告推广方案怎么写
  • 贵阳做网站seo/2024疫情最新消息今天
  • 网站安全建设申请/潍坊网站外包
  • 网站制作公/站长源码
  • 最近国内色情网站做的最好的是哪个/境外电商有哪些平台
  • 一个网站可以做多个描述吗/亚马逊查关键词搜索量的工具
  • viralnova wordpress/潍坊百度快速排名优化
  • 免费网站大全app/怎样才能在百度上发布信息
  • 做网站协调/新东方一对一辅导价格
  • 潍坊网站建设科技有限公司/邯郸seo
  • 苏州高端网站建设/seo诊断网站
  • 百度站长平台如何添加网站/线上推广是什么工作
  • 哈尔滨网站推广/百度大数据查询平台
  • 怎么样找回网站密码/小红书seo排名规则
  • 宣城有木有专业做网站的/seo课程培训机构
  • 目前做网站流行的语言/刚刚刚刚刚刚好痛
  • 手机网站内容管理/中文域名交易网站
  • 大方网站制作/个人网页设计
  • .asp网站开发/外贸出口平台网站
  • 做饼的网站/seo快速排名工具
  • 速度啊网站/玄幻小说百度风云榜
  • 南阳做网站多少钱/百度seo排名规则
  • 国务院建设部网站/seo网站快速排名外包
  • 厦门网站制作公司找哪家/网站外链是什么