C++ 基础题目,分析输出结果解释
#include <iostream.h>
class A{
public:
virtual void printMe(){cout<<"This is class A printing. "<<endl;};
} ;
class B:public A{
public:
void printMe() {cout << "This is class B printing. "<<endl;}
} ;
class C:public B{
public:
void printMe() {cout <<"This is class C printing. "<<endl;}
} ;
void print(A a){
a.printMe();
}
int main(){
B b;
C c;
print(b);
print(c);
return 0;
}
为什么输出的是
This is class A printing.
This is class A printing.
而不是
This is class B printing.
This is class C printing.
呢? 不是放了virtual 了?
生成A的临时对象
[解决办法]

[解决办法]
正解,要想获得多态情况的输出,可以改成这样void print(A& a)