我有课A和B.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 的方法?当我必须首先抛出物体时,一种方法超载在我看来并不合理......
谢谢你的帮助!
你的"a"变量是A,而不是B. A a = B();创建一个新的临时B,然后通过复制B的A部分来创建A.
试试这个:
B b;
A * a = &b;
a->WhoAreYou();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |