在基类中声明一个无参数的构造函数来替换默认的构造函数,那么它可以隐式地被派生类调用()
- · 有7位网友选择 对,占比77.78%
- · 有2位网友选择 错,占比22.22%
(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 ();
}
什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求:
(1)在复数内部用浮点数定义它的实部和虚部。
(2)实现3个构造函数:默认的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。
(3)定义获取和修改复数的实部和虚部,以及+、-、X、/等运算的成员函数。
(4)定义重载的流函数来输出一个复数。
A.一个类可以定义多个拷贝构造函数
B. 若未定义拷贝构造函数,则系统会提供一个默认拷贝构造函数
C. 当类中有指针成员变量时,通常要为这个类定义一个拷贝构造函数来实现深拷贝
D. 拷贝构造函数中的参数按引用方式传递
A.构造函数用于代替类中的一个成员函数来在创建对象时给对象赋初值(通常是成员变量),它是由人工设计的,因此可以在任何时候,任何地方来调用它
B.构造函数的名字与类名相同,因此同类的不同对象的构造函数是相同的
C.构造函数的参数多少没有定制,它的返回值的类型为void型
D.构造函数的名字与类名相同,因此一个类只有一个构造函数,即构造函数不可重载
①构造函数重载;②成员函数设置缺省参数;③定义一个友元函数来打印日期(3分);④可使用不同的构造函数来创建不同的对象。
下列关于派生类的构造函数的说法中,哪个是错误的 ______。
A.派生类不继承基类的构造函数和赋值运算
B.派生类的构造函数可以调用基类的构造函数
C.派生类的构造函数先于基类的构造函数执行
D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员
应添加“virtualvoidGetNamt!=0;”。 (2)应添加“constchar*GetName2”。 (3)应添加“TC2(char*str)”。 (4)应添加“m_str[i]=0;”。 【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚函数”。在C++中,在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即“virtualvoidGetName=0;”。第2处要求“函数GetName2实现获得名字的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即“constchar*GetName2”。第3处要求“实现TC2的构造函数”。TC2的构造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为“TC2(char*str)”。第4处要求“完成TC2的构造函数,实现对名字的处理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!