21xrx.com
2024-12-27 22:21:00 Friday
登录
文章检索 我的文章 写文章
C++重写父类函数
2023-07-07 06:28:33 深夜i     --     --
C++ 重写 父类 函数 继承

在C++中,重写父类函数是面向对象编程中一个非常重要的概念。当我们需要在派生类中重写已有的父类函数时,可以使用C++中的几种方法来实现。

首先,我们需要了解什么是父类函数和派生类。在C++中,父类是指被继承的类,而子类或者派生类是指继承父类属性和方法的类。当我们创建一个派生类时,它会自动继承父类的所有公共和保护成员,包括函数。而在某些情况下,我们需要在派生类中对已有的父类函数进行修改或重写,以便满足特殊的需求。

C++中重写父类函数有两种常用方法:虚函数和纯虚函数。虚函数是一个在基类中声明的带有关键字virtual的函数,它可被派生类覆盖,并在运行时确定调用的是哪个函数。通过在派生类中重新实现虚函数,我们就可以改变这个虚函数的实现,从而达到重写父类函数的目的。

下面是一个示例代码:


#include <iostream>

using namespace std;

class A {

public:

 virtual void sayHello()

  cout << "Hello from A" << endl;

 

};

class B : public A {

public:

 void sayHello() override

  cout << "Hello from B" << endl;

 

};

int main() {

 A* a = new B();

 a->sayHello();

 delete a;

 return 0;

}

在这个示例中,A是一个基类,B是派生类。A中的sayHello函数被定义为虚函数,而B中通过添加override关键字来重写了A中的sayHello函数,从而实现了不同的实现方式。运行代码会输出"Hello from B",表明虚函数的重写已经生效。

除了虚函数,C++中还可以使用纯虚函数来重写父类函数。在C++中,纯虚函数是在基类中声明的虚函数,在被派生类继承后必须重写。与虚函数不同的是,纯虚函数没有函数体,它只是一个函数声明,具体的实现需要在派生类中进行。

下面是一个示例代码:


#include <iostream>

using namespace std;

class A {

public:

 virtual void sayHello() = 0;

};

class B : public A {

public:

 void sayHello() override

  cout << "Hello from B" << endl;

 

};

int main() {

 A* a = new B();

 a->sayHello();

 delete a;

 return 0;

}

在这个示例中,A中的sayHello函数被定义为纯虚函数,在派生类中必须进行重写。与虚函数的方法相似,B中也重写了sayHello函数并添加了override关键字。运行代码也会输出"Hello from B",表明纯虚函数的重写也已经生效。

综上所述,重写父类函数是C++中非常常见的一个操作。它可以通过虚函数和纯虚函数来实现,具体的选择取决于应用场景。我们需要根据具体的需要来选择最适合的重写方法,并且在实现时需要注意保持正确的函数签名和调用方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复