C++ 重载基类语法
时间: 2024-10-18 09:17:28 浏览: 19
在 C++ 中,直接重载基类的成员函数是不允许的,因为基类的成员是隐式可见的,但是它的实现细节通常由派生类控制。然而,你可以通过以下几种间接方式来模拟某种形式的“重载”:
1. **虚函数**:在基类声明一个虚函数,然后在派生类中提供具体的实现。这样,当你通过基类指针或引用调用这个函数时,会根据实际的对象类型而不是指针类型来调用相应的派生类版本。
```cpp
class Base {
public:
virtual void print() { cout << "Base" << endl; }
};
class Derived : public Base {
public:
virtual void print() override { cout << "Derived" << endl; }
};
```
在这个例子中,`print` 函数在 `Derived` 类中被重写了,所以当你打印一个 `Derived` 对象时会看到 "Derived",而不是 "Base"。
2. **模板方法**:如果你需要对基类的行为进行一些操作前或后的定制,可以创建一个模板方法。这并不是真正的重载,而是利用了 C++ 的模板功能。
```cpp
template<typename T>
class Base {
protected:
void doSomething(T value) {
// 基类实现
cout << "Base doing something with " << value << endl;
}
public:
virtual void process(int i) {
doSomething(i);
// 具体操作
}
};
class Derived : public Base<int> {
public:
void process(float f) override {
doSomething(f); // 虽然不是重载,但可以视为类似的效果
// 进行浮点处理
}
};
```
阅读全文