}
private:
CBaseb;
intc;
};
voidmain()
{
CDerived(1,2,3);-----------------------------------------------------①
d.print();
}
问题一:
以上程序的输出结果是什么,为什么?
答:
程序错误,不能输出结果。
“cout<<"b.a="<问题二:
①处语句执行完后,
答:
b.a=2。
实验七多态性—函数与运算符重载
7.1实验目的
1.理解静态联编和动态联编的概念;
2.掌握成员函数方式运算符重载;
3.掌握友元函数方式运算符重载;
4.掌握++、--、=运算符的重载。
7.2实验内容
1.理解下面的程序并运行,然后回答后面的问题。
#include"iostream.h"
classCComplex
{
public:
CComplex()
{
real=0;
imag=0;
}
CComplex(intx,inty)
{
real=x;
imag=y;
}
intreal;
intimag;
CComplexoperator+(CComplexobj1)-----------------------------------------------①
{
CComplexobj2(real+obj1.real,imag+obj1.imag);
returnobj2;
}
};
voidmain()
{
CComplexobj1(100,30);
CComplexobj2(20,30);
CComplexobj;
obj=obj1+obj2;------------------------------------------------------------------②
cout<cout<}
问题一:
①处的运算符重载,为什么该函数的返回值要设计成CComplex类型?
答:
运算符重载函数的返回值与其操作类的类型相同。
问题二:
②处的运算符重载函数调用就相当于“obj=operator+(obj1,obj2)