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();
} 展开
#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();
} 展开
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
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++规定不能显式调用类自已的构造函数。
展开全部
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,编译肯定过不了.
第二运算符重载还创建临时对象,返回临时对象,简直是浪费资源.
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,编译肯定过不了.
第二运算符重载还创建临时对象,返回临时对象,简直是浪费资源.
追问
倒数第二个不对,编译不通过啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询