相关疑难解决方法(0)

709
推荐指数
11
解决办法
17万
查看次数

C++实际方法重载?

我有课AB.B派生A和重载方法WhoAreYou(),当我现在创建一个类型的变量A并将值设置为一个B对象然后调用时WhoAreYou(),调用方法A.看这个:

class A{
public:
    virtual void WhoAreYou(){
        cout << "I am A!"<<endl;
    }
};
class B: public A{
public:
    void WhoAreYou(){
        cout << "I am B!" << endl;
    }
};


int main(int argc, char ** argv){
    A a = B();
    a.WhoAreYou(); //Output: I am A!
}
Run Code Online (Sandbox Code Playgroud)

有没有办法重载方法所以,在这种情况下,WhoAreYou()将调用B 的方法?当我必须首先抛出物体时,一种方法超载在我看来并不合理......

谢谢你的帮助!

c++ overloading

1
推荐指数
1
解决办法
343
查看次数

标签 统计

c++ ×2

c++-faq ×1

inheritance ×1

object-slicing ×1

overloading ×1