c++继承与派生选择题。在线等。
classX{inta;public:X(intx=0){a=x;}};classY:publicX{intb;public:Y(intx=0,inty=0):X(y))...
class X{int a;public:X(int x=0){a=x;}};class Y:public X{int b;public :Y(int x=0,int y=0):X(y)){ b=x;}};下列语句组中出现语法错误的是?A. X *pa=new Y(1,2);B.X a1=Y(1,3);C.Y b1(2,3); X &a3=b1;D.X a4(10);Y b2=a4; 答案是D 为什么?还有那个单独的对象 a4 到底表示的是什么?
展开
1个回答
2013-11-15
展开全部
这道题考察的是这样一个知识点:子类不可以指向父类,父类可以指向子类D试图用子类对象b2指向父类的一个对象实例a4,所以有语法错误a4是类X的一个实例 C++中,类之间的“=”从语义逻辑上讲代表一种is-a关系,举个例子,比如class student :public person,也就是student继承person类,那么person p=new student();是对的,因为它满足student is a person这样的关系,反过来则不一定,如student s=new person();就不对,因为一个person不一定是一个student。这样可以帮助你理解。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询