virtual overside
时间: 2023-09-23 12:04:11 浏览: 40
`virtual` 和 `override` 是 C++ 中常用的关键字,用于实现多态性和虚函数的重写。
`virtual` 关键字用于声明一个函数为虚函数,这样在运行时可以通过一个基类指针或引用来调用派生类中的函数。
`override` 关键字用于重写基类中的虚函数,其作用是确保派生类中的函数签名和基类中的虚函数完全相同,以此确保在运行时能够正确地调用派生类中的函数。
例如:
```cpp
class Base {
public:
virtual void foo() {
std::cout << "Base::foo()" << std::endl;
}
};
class Derived : public Base {
public:
void foo() override {
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
Base* ptr = new Derived();
ptr->foo(); // 输出 "Derived::foo()"
delete ptr;
return 0;
}
```
在上面的代码中,我们定义了一个基类 `Base`,其中声明了一个虚函数 `foo()`。然后我们派生出一个类 `Derived`,并重写了 `foo()` 函数,并在其中输出了一句话。
在 `main()` 函数中,我们定义了一个基类指针 `ptr`,并将其指向一个派生类对象。我们调用了 `ptr` 的 `foo()` 函数,由于 `foo()` 是虚函数,并且在派生类中已经被重写了,因此输出的是 "Derived::foo()"。这里就体现了多态性的作用。
同时,我们还可以注意到,在 `Derived` 类中,我们使用了 `override` 关键字来标记函数 `foo()` 的重写,这样可以确保在编译时能够检查到是否正确地重写了基类中的虚函数。