![]() |
#2
pangding2012-03-03 22:03
|

#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()函数。#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;
}
输出:
只有本站会员才能查看附件,请 登录
那位大侠给我讲下这里的赋值兼容性规则。