C++题目1112.docx
《C++题目1112.docx》由会员分享,可在线阅读,更多相关《C++题目1112.docx(9页珍藏版)》请在冰豆网上搜索。
C++题目1112
HZAU-专业C++作业11-12
判断题
1.友元关系是单向的,不可交换的。
(2分)
2.只有成员函数才能传递this指针,而友元函数不能传递this指针(2分)
3.友元函数是成员函数,它可以访问类中私有成员。
(2分)
4.在成员函数中访问对象的数据成员时,可以直接用数据成员名,而在友员函数中访问对象的数据成员时,必须指明是哪个对象的数据成员。
(2分)
5.友元是可以继承的。
(2分)
6.常成员函数只能用来引用数据成员的值,而不允许改变数据成员的值。
(2分)
7.C++语言允许使用友元,但是友元会破环封装性。
(2分)
8.必须在类定义体外对静态数据成员进行初始化。
(2分)
9.能访问一个类CMyClass中的private成员的可以是类CMyClass的成员函数,友元函数和友元类中的函数。
(2分)
10.类的友元函数是指可以访问本类私有成员的其他类的成员函数。
(2分)
11.类中的静态成员数据为该类的所有对象所共享,并且,在该类对象被撤销时,静态成员并没有撤销。
(2分)
12.如果在一个类的对象之间要进行数据交换,可以使用该类的静态数据成员来完成。
(2分)
13.如果一个类的所有对象都共享某一个变量,则应当将该变量定义为该类的私有成员。
(2分)
1.
如果类A被说明成类B的友元,则()。
(2分)
A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
2.
友元的作用()。
(2分)
A.提高程序的运用效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类
3.
下述静态数据成员的特征中,()是错误的。
(2分)
A.静态数据成员要在类体外进行初始化
B.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
C.静态数据成员不是所有对象所共用的
D.说明静态数据成员时前边要加修饰符static
4.
已知类A是类B的友元,类B是类C的友元,则()。
(2分)
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C定的成员函数可以访问类B的对象的任何成员
D.类A定的成员函数可以访问类B的对象的任何成员
5.
下面对于友元函数描述正确的是()。
(2分)
A.实现必须在类的内部定义B.是类的成员函数C.破坏了类的封装性和隐藏性D.不能访问类的私有成员
6.
下列运算符不能重载为友元函数的是()。
(2分)
A.=()[]->B.+-++--C.><>=<=D.+=-=*=/=
7.
下面对静态数据成员的描述中,正确的是()。
(2分)
A.可以在类体内进行初始化B.不可以被类的对象调用C.不能受private控制符的作用D.可以直接用类名调用
8.
说明静态成员函数的关键字为()。
(2分)
A.virtualB.staticC.enumD.inline
9.
关于友元的描述中()是错误的。
(2分)
A.友元函数是成员函数,它被说明在类体内(可在类体的任何地方)
B.友元函数可直接访问类中的私有成员
C.友元函数破坏封装性,使用时尽量少用
D.友元类中的所有成员函数都是友元函数
10.
在下列各类函数中,不属于类的成员函数的是()。
(2分)
A.构造函数B.析构函数C.友元函数D.拷贝构造函数
11.
下列说明constchar*p;其中p应该是()。
(2分)
A.指向字符常量的指针B.指向字符的常量指针C.指向字符串常量的指针D.指向字符串的常量指针
12.
已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()。
(2分)
A.voidprint()const;B.constvoidprint();C.voidconstprint();D.voidprint(const);
13.
模板对类型的参数化提供了很好的支持,因此()。
(2分)
A.类模板的主要作用是生成抽象类
B.类模板实例化时,编译器将根据给出的模板实参生成一个类
C.在类模板中的数据成员都具有同样类型
D.类模板中的成员函数都没有返回值
14.
模板定义中的类型参数可以用作()。
(2分)
A.局部变量类型B.函数参数类型C.函数返回值类型D.以上的都可以
15.
类模板的使用实际上是将类模板实例化成一个具体的()。
(2分)
A.类B.对象C.函数D.模板类
16.
一个()允许为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
(2分)
A.函数模板B.模板函数C.类模板D.模板类
程序设计题
1.(5分)
函数模板
题目描述
下面程序定义一个函数模板,返回两个值中的最大值,请将以下程序的空补充完整后提交。
#include
usingnamespacestd;
(1)
inlineT
(2)Max(Tconst&a,Tconst&b)
{
return(3);
}
intmain()
{
cout<cout<return0;
}
输入描述
无
输出描述
略
输入样例
无
输出样例
10
7.8
2.(10分)
类模板
题目描述
程序功能是计算不同类型的数据之和。
请补充完整程序,并提交。
#include
usingnamespacestd;
(1)
classTAdd
{
private:
Tx,y;
public:
TAdd(Ta,Tb)
{
(2)
(3)
}
Tadd()
{
(4);
}
};
intmain()
{
TAddA(5,6);
TAddB(2.4,5.8);
cout<<"s1="<cout<<"s2="<return0;
}
输入描述
无
输出描述
略
输入样例
无
输出样例
s1=11,s2=8.2
3.(10分)
静态数据成员
题目描述
设计一个日期(Date)类,其中有数据成员intyear,month,dat;,有静态数据成员数组intdays[12];,用于分别存放一年12个月的天数,初始化为{31,28,31,30,31,30,31,31,30,31,30,31}。
在具体应用时,根据对象的成员year年是否为闰年调整2月份的天数days[1]的值。
请设计一个成员函数计算对象的日期在当年是第几天。
类的成员函数可以设计如下:
Date(intYear=2000,intMonth=1,intDay=1);//构造函数
voidSet(intYear,intMonth,intDay);
intisLeapyear();//判断是否为闰年
intDays();//计算是该年的第几天
voidShow();//显示年月日
并且,在类外编写一个测试函数:
voidtest(inty,intm,intd)
输入描述
待测试的日期
输出描述
天数
输入样例
201211
201221
201231
201241
201251
输出样例
是2012年的第1天
是2012年的第32天
是2012年的第61天
是2012年的第92天
是2012年的第122天
4.(10分)
友元
题目描述
设计Point类描述平面直角坐标系中的点,其中有数据成员doublex,y;,再设计一个该类的友元函数用于计算两个给定的Point类对象之间的距离。
如:
frienddoubledistance(constPoint&p1,constPoint&p2);
主函数如下:
intmain()
{
Pointa,b(1,2);
a.Show();b.Show();
cout<return0;
}
程序运行结果见后面的描述。
输入描述
无
输出描述
略
输入样例
无
输出样例
(0,0)
(3,4)
5
5.(7分)
类模板改错题
题目描述
请将教材P352页的练习12的第1题改正后提交。
输入描述
无
输出描述
无
输入样例
略
输出样例
略