我试图让我的头围绕在C++的一些继承问题:返回子类为基类对象
考虑一个基类Foo()
与方法method()
及其派生类Bar
。现在我重写Bar
中的方法。
class Foo{
public:
double method();
}
class Bar public: Foo
{
public:
double method()
}
而且这样的功能:
Foo get_bar(){
Bar bar()
return bar
}
调用函数get_bar()
我希望能够调用Bar::method()
Foo foo = get_bar();
foo.method() (-> which should be Bar::method)
这可能吗?如果,如何?我认为我在这里犯了一个根本的错误,我没有看到。谢谢!
能否请你使用你的榜样正确的语法:'栏(){市民:Foo'这是不正确的(有几个更像缺少返回类型和分号) – Borgleader 2015-03-02 16:16:03
正在使'方法'虚拟一个选项?因为这是虚拟方法存在的确切原因。 – Guvante 2015-03-02 16:17:20
要创建一个Bar对象,你不应该在变量名后面加上() - 编译器会认为你正在声明一个函数 - 这会让我时不时地发现 – Jimmy 2015-03-02 16:25:35