赋值兼容性
书上看到的一个例子 ![](zzz/editor/img/code.gif)
#include "stdafx.h" #include <iostream> using namespace std; class A { int x; public: A(int i){x=i;} void disp(){cout<<"x="<<x<<endl;} }; class B:public A { int y; public: B(int i,int j):A(i){y=j;} void disp(){cout<<"y="<<y<<endl;} }; int main(int argc,char* argv[]) { A *p,a(1); B b(2,3); p=&a; p->disp(); p=&b; p->disp(); return 0; }书上这样说 原意是想用指针p分别调用父类和子类中的disp()函数。由于赋值兼容性,p只能调用到父类的disp()函数。
输出:
![](http://bbs_bccn_net.bccnsoft.com/006/month_1203/20120303_5a45dc9159eb84e9aff2QMJ71suj0AvQ.jpg)
那位大侠给我讲下这里的赋值兼容性规则。