请按下面注释的提示,将类B的构造函数定义补充完整。classA { int a; public: A(int aa=0){a=aa;)
请按下面注释的提示,将类B的构造函数定义补充完整。
classA
{
int a;
public:
A(int aa=0) {a=aa;)
};
Class B:public A
{
int b;
A c;
public:
//用aa初始化基数A,用aa+1初始化类对象成员c
B(int aa): (b=aa+2)
};
请按下面注释的提示,将类B的构造函数定义补充完整。
classA
{
int a;
public:
A(int aa=0) {a=aa;)
};
Class B:public A
{
int b;
A c;
public:
//用aa初始化基数A,用aa+1初始化类对象成员c
B(int aa): (b=aa+2)
};
A.A(aa), c(aa+1)
B.a=aa, c(aa+1)
C.A(aa), c.a=aa+1
D.a=aa , c.a=aa+1
程序输出结果如下:
1O
5
1057
(1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。
(2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传人。请在注释2之后添加适当的语句。
(3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。
(4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
include(iostream.h>
classBA
{
inta;
public:
//********1********
intgeta{returna;}
};
classPAl:publicBA
{
intb;
public:
//********2********
intgetb{returnb;}
};
classPA2:publicPAl
{
intC;
public:
//********3********
voidshow
{
//********4********
}
};
voidmain
{
PA2a(7,5,10);
cout<<a.geta<<endl;
cout<<a.getb<<endl;
a.show;
}
(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//** 1**”之后添加适当的语句。
(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//**2**”之后添加适当的语句。
(3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和2,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。
(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
程序输出结果如下:
9
6
962
源程序文件test30_3.cpp清单如下:
include <iostream.h>
class A
{
int a;
public:
//** 1 **
int geta() {return a;}
};
class A1:public A
{
int b;
public:
//** 2 **
int getb() {return b;}
};
class A2:public A1
{
int c;
public:
//** 3 **
void show()
{
//** 4 **
}
};
void main()
{
A2 a(2,6,9);
cout<<a.geta () <<end1;
cout<<a, getb () <<end1;
a. show();
}
(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1 **”之后添加适当的语句。
(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**。”之后添加适当的语句。
(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。
输出结果如下;
[1,2]
[3,4,5]
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件tese9_3.cpp清单如下:
include<iostream.h>
class Coordinate
{protected:
//** 1 **
public:
Coordinate(int a=0, int b=0);
//** 2 **
};
Coordinate::Coordinate(int a, int b)
{
//** 3 **
}
void Coordinate::Display() const
{
cout << '[' << x << ", "<< y << ']' << end1;
}
class ThreeDCoord:public Coordinate
{
int z;
public:
ThreeDCoord(int a=0, int b=0, int c=0);
virtual void Display() const;
};
//** 4 **
void ThreeDCoord::Display() const
{
cout << '[' << x << ", "<< y << ", "<< z << ']' << end1;
}
void main ()
{
Coordinate c(1, 2);
ThreeDCoord t(3, 4, 5);
c.Display ();
t.Display ();
}
(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释“//**1**。”之后添加适当的语句。
(2)完成类Text的构造函数Text(char *str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。
(3)定义类CircleWithText的构造函数CircleWithText(int cx,int cy,char *msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。
输出结果如下:
Point:3 4
hello
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test17_3.cpp清单如下:
include <iostream.h>
include <string.h>
class Point
{
int x,y;
public:
//**1**
{
cout<<"Point:"<<x<<' '<<y<<'\n';
}
~Point(){}
};
class Text
{
char text[100];
public:
Text(char *str)
{
//**2**
}
~Text () { }
};
class CircleWithText:public Point,public Text
{
public:
//**3**
{}
~CircleWithText() {}
};
void main()
{
CircleWithText cm(3,4,"hello");
}
(1)添加类complex的无参数的构造函数的定义,将私有成员real和imag都初始化为0。请在注释“//**1**”之后添加适当的语句。
(2)添加类complex的带两个参数的重载构造函数,两个参数r和i都是double类型,要求将r赋值给私有成员real, i赋值给私有成员imag,同时允许调用时参数i可是省略,请在注释“//**2**”之后添加适当的语句。
(3)完成类complex重载加法函数的定义,该函数直接返回一个类complex的对象,同时把参数对象c的实部real和虚部imag分别与当前对象对应部分分别相加,请在注释“//**3**”之后添加适当的语句。
(4)完成类complex的友元函数print的定义,使其以格式“real+imagi”输出,请在注释“//**4**”之后添加适当的语句。
源程序文件test38_3.cpp清单如下;
include <iostream.h>
class complex
{
public:
// ** 1 **
// ** 2 **
{
real=r;imag=i;
}
complex operator+(complex & c);
friend void print(complex &c);
private:
double real,imag;
};
complex complex::operator+(complex & c)
{
// ** 3 **
}
// ** 4 **
cout<<c.real<<"+"<<c.imag<<"i"<<endl;
}
void main()
{
complex c1(2.0,3.0),c2(4.0,-2.0),c3;
c3=c1+c2;
print(c3);
c3=c3+complex(3.5);
print(c3);
}
①定义私有数据成员year、month和day分别用于表示年、月、日,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。
②完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1, day=1,请在注释“//**2**”之后添加适当的语句。
③完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释“//**3**”之后添加适当的语句。
④完成成员函数print的类外定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain1.cpp清单如下:
//MyMainl. cpp
include <iostream>
using namespace std;
class Date
{
public:
//* * 2 * *
Date(int y, int m, int d)
{
//* * 3 * *
}
void print() const;
private:
//data member
//* * 1 * *
};
void Date: :print () const
{
//* * 4 * *
}
int main ()
{
Date national_day(1949,10,1);
national_day.print();
return 0;
}
(1)定义类Time的私有数据成员hours、minutes和seconds,它们都是int型的数据,分别表示时间的小时、分和秒。请在注释“//**1**”之后添加适当的语句。
(2)完成类Time缺省构造函数的定义,该函数将数据成员hours、minutes和seconds的值初始化为0,请在注释“//** 2**”之后添加适当的语句。
(3)完成类Time带参构造函数的定义,该函数将数据成员hours、minutes和seconds的值分别初始化为参数h、m和s的值,请在注释“//**3**”之后添加适当的语句。
(4)完成类Time中运算符“+”的重载,注意小时、分和秒在相加时的进位问题。请在注释“//**4**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
程序输出结果如下:
8:17:11
源程序文件test33_3.cpp清单如下:
include <iostream.h>
class Time
{
//** 1 **
public:
Time ()
{
//** 2 **
seconds=0;
}
Time(int h, int m, int s)
{
//** 3 **
minutes=m;
seconds=s;
}
Time operator +(Time&);
void gettime();
};
Time Time::operator +(Time& time)
{
//** 4 **
s=time.seconds+seconds;
m=time.minutes+minutes+s/60;
h=time.hours+hours+m/60;
Time result(h,m%60,s%60);
return result;
}
void Time::gettime()
{
cout<<hours<<":"<<minutes<<":"<<seconds<<end1;
}
void main()
{
Time t1(3,20,15),t2(4,56,56),t3;
t3=t1+t2;
t3.gettime();
}
(1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。
(2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。
(3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。
(4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。
源程序文件test37_3.cpp清单如下:
include<iost ream. h>
class Letter
{
protected:
char ch;
public:
// ** 1 **
};
class Number
{
protected:
int num;
public:
// ** 2 **
};
class Grid : public Letter, public Number
{
public:
// ** 3 **
friend ostream& operator<<(ostream &o,Grid &g);
};
// ** 4 **
{
o << "[" << g.ch << ", "<< g.num << "]";
return o;
}
int main ()
{
Grid g('C', 3);
cout << "Grid reference: "<< g << end1;
return 0;
}
(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。
(2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
Circle c;
c.SetRadius(5);
c.Print();
将输出:The circle has radius of 5!
请在注释“//**2**”之后添加适当的语句。
(3)完成友元函数void CompareR(Circle *cl,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用 if-else结构完成。请在注释“//**3**”之后添加适当的语句。
输出结果如下;
The circle has radus of 5!
The circle has radius of 10!
c1<c2
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test7_3.cpp清单如下:
include<iostream.h>
class Circle{
public:
Circle():radius(5){}
//**1**
void SetRadius(int r) {radius=r; }
int GetRadius() {return radius; }
//**2**
friend void CompareR(Circle *c1,Circle*C2);
private:
int radius;
};
void CompareR(Circle *c1,Circle *C2)
{
//**3**
cout<<"c1>c2"<<endl;
else
if((c1->GetRadius())==(c2->GetRadius()))
cout<<"c1=c2"<<endl;
else
if((c1->GetRadius())<(c2->GetRadius()))
cout<<"c1<c2"<<endl;
}
void main()
{
Circle c1;
c1.SetRadius(5);
C1.Print();
Circle c2(10);
c2.Print();
CompareR(&c1,&c2);
}
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!