分类：电脑/网络-程序设计-C/C++
问题：关于继承与派生的问题#include&lt;iostream.h 
#include<tream.h>classA{ (){cout<<'A'<<endl;}}; { (){cout<<'B'<<endl;}};voidmain(){A*p;Bb;p=&b;(*p).fun();b.fun();}请问,为什么输出是A,B;而不是B,B呢?
回答：楼主，你应该看到以下两条语句：
(*p).fun(); 
b.fun(); 
这说明什么呢？先说第一条：
对于(*p).fun(); 来说，p指针是“一个A类定义的指针”，因此，p遵守的规则局限于A类的函数。也就是说，p指针只会引用A类定义的函数。所以，(*p).fun(); 的结果就执行了如下代码：
void fun() 
{ 
cout<<'A'<<endl; 
} 

再说第二条：b.fun(); 
对于b.fun();来说，b变量的类型是B，这一点由下面代码决定：
B b; 
因此，b.fun();只会执行B类中定义的函数，也就是说，b.fun()只会执行如下代码：
void fun() 
{ 
cout<<'B'<<endl; 
} 

我讲清楚了吗？