您的位置:首页 > 其它

第十一周项目—阅读程序,说出在测试函数中不同情况的调用产生的结果(5 b)

2016-05-18 16:34 363 查看
问题及代码:

/*
*Copyright(c) 2016.烟台大学计算机与控制工程学院
*ALL rights  reserved.
*文件名称:main.cpp
*作者:郝昱猛
*完成日期:2016年5月18日
*问题描述:阅读程序,说出在测试函数中不同情况的调用产生的结果
*/

#include <iostream>
using namespace std;
class A
{
protected:
int a,b;
public:
A(int aa, int bb):a(aa), b(bb) {}
void printA(){
cout<<"a: "<<a<<"\tb: "<<b<<endl;
}
};
class B: public A
{
int c;
public:
B(int aa, int bb, int cc):A(aa,bb),c(cc) {}
void printB()
{
cout<<"a: "<<a<<"\tb: "<<b<<"\tc: "<<c<<endl;
}
};
int main()
{
A a(1,1);
B b(2,3,4);
b=a;  //有错误,基类对象不可以赋值给派生类
a.printA();
b.printA();
b.printB();
return 0;
}


程序编译错误 :error: no match for 'operator='(operator types are 'B' and 'A')

运算符两边不匹配

程序编译错误原因 :派生类对象有基类对象的所有成员变量以及成员函数,可能还有基类

没有的成员变量或成员函数,此时如果将基类对象赋值给派生类,可

能成员函数就报错了,所以基类对象不可以赋值给派生类。

相反,派生类的对象可以赋值给基类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: