如果函数在派生类中重载但函数签名未更改,是否有任何方法可以从基类指针调用派生类的函数?例如:
给出以下基类和派生类
class Base {
public:
Base(int n): n_(n) {}
~Base() {}
int get_n() {
return n_;
}
private:
const int n_;
};
class Derived : public Base {
public:
Derived(int n): Base(n), n_(n) {}
~Derived() {}
double get_n() {
return 1.5*n_;
}
private:
const int n_;
};
考虑到两个1.5
函数的返回类型不同,有没有办法让以下内容输出get_n()
?
#include <iostream>
int main() {
Base *b = new Derived(1);
std::cout << b->get_n() << std::endl;
}
答案 0 :(得分:0)
在基类中制作get_n
虚拟。像,
virtual int get_n()
{
return n_;
}