c++ 重定义 重写
时间: 2023-10-18 19:56:56 浏览: 96
浅谈C++重载、重写、重定义
在C++中,重定义(redefinition)和重写(override)是两个不同的概念。
1. 重定义(Redefinition):重定义指的是在同一作用域内多次定义同一个标识符(变量、函数、类等)。这是一个编译错误,因为C++编译器要求每个标识符只能有一个定义。
例如:
```cpp
int x; // 第一次定义x
int main() {
int x; // 第二次定义x,会导致重定义错误
return 0; }
```
2. 重写(Override):重写指的是在派生类中重新实现基类的虚函数。通过使用`virtual`关键字将基类函数声明为虚函数,派生类可以提供自己的实现,覆盖基类的实现。这样,在通过基类指针或引用调用虚函数时,将根据实际对象类型来调用正确的函数实现。
例如:
```cpp
class Base {
public:
virtual void foo() {
cout << "Base::foo()" << endl;
}
};
class Derived : public Base {
public:
void foo() override {
cout << "Derived::foo()" << endl;
}
};
int main() {
Base* ptr = new Derived();
ptr->foo(); // 调用Derived::foo()
delete
阅读全文