C++中父类的public: std::string getIdentifier() const override;函数子类是否可以直接调用?
时间: 2024-11-25 07:13:55 浏览: 3
C++中,如果父类的`public:`成员函数`std::string getIdentifier()`被声明为`override`,这意味着它是一个虚函数(virtual function)。子类可以通过继承并重写这个函数来直接调用。由于它是公开的(public),所以子类实例可以直接访问并调用`getIdentifier()`,即使它们实际上是在执行父类或子类自己的实现。
举个例子:
```cpp
// 父类
class Base {
public:
virtual std::string getIdentifier() const override {
// 父类实现
return "Base";
}
};
// 子类
class Derived : public Base {
public:
std::string getIdentifier() const override {
// 子类实现
return "Derived";
}
};
// 使用时
Derived derived;
std::cout << derived.getIdentifier(); // 直接调用子类的实现,输出 "Derived"
```
在这个例子中,子类`Derived`覆盖了父类的`getIdentifier()`,所以`derived.getIdentifier()`会执行子类版本的方法。[^1]
阅读全文