class A{
public:
virtual void foo() {cout << "A::foo" << endl;}
};
class B: public A{
public:
virtual void foo() {cout << "B::foo" << endl;}
};
int main(void){
A a;
B b;
A acast=(A)B;
A *apointer=&B;
acast.foo(); // A::foo
apointer->foo() //B::foo
return 0;
}
爲什麼兩個印刷品的行爲不同?類和指針的C++類型鑄造
他們爲什麼不應該這樣做?你正在調用不同類型對象的成員函數。 –
'一個acast =(A)b;'不會*轉換*'b',它*轉換*它。有一個區別。 –