我有类 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!
}
有没有办法重载该方法,以便在这种情况下调用 B 的 WhoAreYou()
方法?当我必须首先转换对象时,方法重载在我看来并没有真正意义......
感谢您的帮助!
最佳答案
您的“a”变量是 A,而不是 B。A a = B();
创建一个新的临时 B,然后通过复制 B 的 A 部分创建一个 A。
试试这个:
B b;
A * a = &b;
a->WhoAreYou();
关于C++ 真正的方法重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5065914/