告诉编译器子类-多态性
Tell compiler about subclass -polymorphism
如果我有一个基类Base和子类Sub,并且在子类中有一个不存在于超类中的成员函数-我如何告诉编译器它在那里?
#include <iostream>
using namespace std;
class Base {
public:
};
class Sub : public Base {
public:
void printFromSub() {
cout << "I am not inherited ;-)" << endl;
}
};
int main() {
Sub sub;
Base* base;
base = ⊂
base->printFromSub(); // not possible at compile-time
return 0;
}
必须转换为派生类。
如果您确定base
指向派生类的对象,那么您可以使用static_cast
。
static_cast<Sub*>(base)->printFromSub();
如果你不确定,那么你需要一个运行时检查。
Sub* p = dynamic_cast<Sub*>(base);
if (p) p->printFromSub();
相关文章:
- C++模板方法重载和具有多态性的类访问
- 没有新成员的模板多态性派生类的大小
- 从具有多态性的类中检索数据
- 具有不同模板类型的子类的多态性
- 为什么我需要在子类中重新声明"虚拟"方法?[C++/多态性]
- 多态性:通过类文本或对象访问静态成员
- c++多态性:基类的上转换/下转换和容器,缺少数据
- c++多态性和传递子类
- C++多态性模板类:调用基类方法而不是派生类
- 我调用的函数不是通过多态访问子类的函数
- C++ / 多态性 / 虚函数 / 为什么我的子类的函数没有被调用?
- 继承/多态性-调用子类的方法
- C++中的多态性和类抽象实例
- C++工厂制造和多态性 ->调用由映射迭代器访问的实例的子类的虚拟方法
- C++多态性:从父类到子类
- 多态性:实例类
- c++中多态性基类和继承类实例化的问题
- 实例化子类的多态性问题
- 多态性基类指针
- C++ 多态性 - 继承类的映射