sv子类重写父类虚函数
时间: 2024-08-13 07:08:12 浏览: 58
NEC程控电话机手册, SV8300/SV9300
在面向对象编程中,当一个子类继承自一个父类,并有一个或多个虚函数(被声明为 virtual 的成员函数)时,子类可以通过重写这些虚函数来提供特定于子类的行为。这是多态(polymorphism)的一个关键应用,因为同一类型的指针或引用可以指向不同子类的对象,调用虚函数时会根据实际对象的类型执行相应子类的代码。
具体步骤如下:
1. **声明虚函数**:在父类中声明虚函数,通常在其前加上 `virtual` 关键字。这样,当子类继承该函数时,就允许子类重写它。
```cpp
class Parent {
public:
virtual void virtualFunction() { /* 父类实现 */ }
};
```
2. **子类重写虚函数**:在子类中,用同样的函数名覆盖虚函数,去掉 `virtual` 关键字,并提供子类特有的实现。
```cpp
class Child : public Parent {
public:
void virtualFunction() override { /* 子类实现 */ }
};
```
`override` 关键字确保了子类是在正确地重写父类的虚函数,如果没有,编译器会报错。
3. **动态调用**:使用指向父类的指针或引用调用虚函数时,会运行子类的实际实现,即使对象是父类类型的实例。这是因为虚函数表(vtable)的存在,它存储了每个虚函数在内存中的地址。
```cpp
Parent* parentPtr = new Child();
parentPtr->virtualFunction(); // 将调用 Child 类的 virtualFunction 实现
```
阅读全文