首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 基础标题,分析输出结果解释

2013-11-08 
C++ 基础题目,分析输出结果解释#include iostream.hclass A{public:virtual void printMe(){coutThis

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的临时对象
[解决办法]


生成A的临时对象
C++ 基础标题,分析输出结果解释
[解决办法]
引用:
虚函数只在使用指针或引用调用的时候生效
void print(A a)这种参数将把输入的B b和C c复制成局部的A a,再由对象a调用A::printMe()


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

热点排行