从基类指针调用派生类'函数

时间:2014-06-06 01:35:13

标签: c++ inheritance overloading

如果函数在派生类中重载但函数签名未更改,是否有任何方法可以从基类指针调用派生类的函数?例如:

给出以下基类和派生类

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;
}

1 个答案:

答案 0 :(得分:0)

在基类中制作get_n 虚拟。像,

virtual int get_n() 
{
    return n_;
}