C++高手赐教,请帮忙做两道程序填空题,括号内数字处为缺失语句,请帮忙填上,不胜感激!!

一、#include<iostream.h>classB1{private:intX;public:B1(intx=0){X=x;}voidprint(){cout<<"... 一、
#include <iostream.h>
class B1
{
private:
int X;
public:
B1(int x=0) {X=x;}
void print() {cout<<"X="<<X<<endl;}
};
class B2
{
private:
int Y;
public:
B2(int y=0) {Y=y;}
void print() {cout<<"Y="<<Y<<endl;}
};
class D:public B1
{
private:
B2 b;
int Z;
public:
D(int x, int y, int z):B1(x), (1)
{Z=z;}
void print() //派生类D的成员函数,打印对象的值
{
B1::print(); //打印基类B1的成员X
(2) ; //打印对象成员b的Y值
(3) ; //打印成员Z的值
}
};
void main()
{
D d(1,3,5);
d.print(); //输出X=1,Y=3,Z=5
}

二、
#include <iostream.h>
class Complex
{
private:
float real, imag;
public:
Complex(float r=0, float i=0) {real=r; imag=i;}
void Display()
{
cout<<real;
if(imag>0)
cout<<"+"<<imag<<"i";
else
cout<<"-"<<imag<<"i";
}
Complex operator+(complex b); //成员函数
friend Complex operator-(Complex a, Complex b);//友元函数
};
(4) Complex(b)
{
Complex temp;
temp.real= (5) ;
temp.imag= (6) ;
return temp;
}
Complex operator-(Complex a, Complex b)
{
return (7);
}
void main()
{
Complex c1(4.0, 5.0), c2(2.0, -5.0), c3;
(8) ; //C1和c2相加,结果放入c3
c3.Display();
}
展开
 我来答
忘至白葬不情必0T
2012-01-11 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
b(y)
b.print()
cout<<"Z="<<Z<<endl
Complex operator+
real+b.real
imag+b.imag
Complex(a.real-b.real,a.imag-b.imag)
c3=c1+c2
追问
第一个为什么不是B2(y)?
追答
这是规定。因为派生类无法直接访问基类的private成员,只有通过基类的方法才能访问,所以对成员X,要用B1(x)初始化。而正常的初始化都应该像b(y)这样来调用的,因为C++规定不能显式调用类自已的构造函数。
slatop
2012-01-11 · TA获得超过1390个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:427万
展开全部
public:
D(int x, int y, int z):B1(x),b(y) //第一处初始化B2类
{Z=z;}
void print() //派生类D的成员函数,打印对象的值
{
B1::print(); //打印基类B1的成员X
b.print(); //第二处调用B2类的print函数 输出y值 //打印对象成员b的Y值
cout<<"Z="<<Z<<endl;; //第三处打印Z的值 ; //打印成员Z的值
}
};
void main()
{
D d(1,3,5);
d.print(); //输出X=1,Y=3,Z=5
}

二、
#include <iostream.h>
class Complex
{
private:
float real, imag;
public:
Complex(float r=0, float i=0) {real=r; imag=i;}
void Display()
{
cout<<real;
if(imag>0)
cout<<"+"<<imag<<"i";
else
cout<<"-"<<imag<<"i";
}
Complex operator+(complex b); //成员函数
friend Complex operator-(Complex a, Complex b);//友元函数
};
Complex Complex::operator+(complex b)
{
Complex temp;
temp.real=this.real+b.real; // (5) ;
temp.imag=this.imag+b.imag;// (6) ;
return temp;
}
Complex operator-(Complex a, Complex b)
{
Complex temp;
temp.real=a.real-b.real;
temp.imag=a.imag-b.imag;
return temp; (7);
}
void main()
{
Complex c1(4.0, 5.0), c2(2.0, -5.0), c3;
c3=c1+c2;(8) ; //C1和c2相加,结果放入c3
c3.Display();
}

你这什么破题啊,简直是漏洞百出,你们老师就这样出题简直是误人子弟.
就是晕么改的,但问题太多.第一没有释放名字空间std,编译肯定过不了.
第二运算符重载还创建临时对象,返回临时对象,简直是浪费资源.
追问
倒数第二个不对,编译不通过啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式