C++
面向对象程序设计模拟试题二一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.说明内联函数的关键字是( a )。
A. inline B. virtual C. define D. static
2.假定CAb为一个类,则执行CAb oX;语句时将自动调用该类的(b )
A. 有参构造函数 B. 无参构造函数
C. 拷贝构造函数 D. 赋值重载函数
3.cin是某个类的标准对象的引用,该类是( b )。
A. ostream B. istream C. stdout D. stdin
4.下面的哪个保留字不能作为函数的返回类型?( c )
A. void B. int C. new D. long
5.不能参与重载的运算符是( a )。
A. 类 B. 函数 C. 函数模板 D. 运算符
6.由于数据隐藏的需要,静态数据成员通常被说明为( a )。
A. 私有的 B. 公有的 C. 保护的 D. 不可访问的
7.编译时多态性使用什么获得?( a )
A. 重载函数 B. 继承 C. 虚函数 D. B和C
8.拷贝构造函数的参数通常是( c )。
A. 无特殊要求 B. 指向对象的指针
C. 自已类对象的常引用 D. 对象
9.C++有几种联编?( b )
A. 1种 B. 2种 C. 3种 D. 4种
10.基类和派生类可以分别称为( b )。
A. “大类”和“小类” B. “父类”和“子类”
C. “小类”和“大类” D. “子类”和“父类”
二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。
1.不可以定义抽象类的对象。 ( a )
2.内联函数的定义必须出现在第一次调用内联函数之前。 ( a )
3.模板函数与函数模板的意义完全相同。 ( b )
4.只有常成员函数才可以操作常对象。 ( a )
5.引用可以不初始化。 ( b )
6.使用new运算符创建数组时,可以为该数组指定初始值。 ( b )
三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.设函数max是由函数模板实现的,并且max(3.5, 5)和max(3, 5)都是正确的函数调用,则此函数模板具有( 2 )个类型参数。
2.在C++中,函数重载与虚函数帮助实现了类的( 多态 )性。
3.由static修饰的数据成员为该类的所有对象( 都可访问 )。
4.重载函数在参数类型或参数个数上不同,但( 函数名 )相同。
5.使用new建立的动态对象在不用时必须用( delete )释放所占用的空间。
6.重载运算符“<<”的函数名为( operator<< )。
六、编程题(本大题共2个小题,每小题8分,共16分)
1.编写一个函数模板,用于求数组中各元素之和,并编写测试程序进行测试。
函数模板声明如下:
template Type Sum(Type tArray[], int iSize)
2.定义一个抽象类CShape,它有一个纯虚函数GetLength();派生出四边型类CSquare和圆类CCircle,在派生类中重载函数GetLength(),用于求图形的周长,编写测试程序进行测试。
C++面向对象程序设计模拟试题二参
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.A 2.B 3.B 4.C 5.A
6.A 7.A 8.C 9.B 10.B
二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。
1.参:√
2.参:√
3.参:×
4.参:√
5.参:×
6.参:×
三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.参:2
2.参:多态
3.参:共享
4.参:函数名
5.参:delete
6.参:operator<<
六、编程题(本大题共2个小题,每小题8分,共16分)
1.参考程序:
#include using namespace std;
template Type Sum(Type tArray[], int iSize)
{
Type tSum = 0;
for (int i = 0; i < iSize; i++)
{
tSum = tSum + tArray[i];
}
return tSum;
}
int main(void)
{
int a[] = {1, 2, 3};
double b[] = {1.5, 2.8, 8.9, 8};
cout << Sum(a, 3) << endl;
cout << Sum(b, 4) << endl;
return 0;
}
2.参考程序:
#include using namespace std;
class CShape
{
public:
virtual double GetLength() const = 0;
};
class CSquare:public CShape
{
public:
CSquare(double dWidth, double dHeight)
{
m_dWidth = dWidth;
m_dHeight = dHeight;
}
double GetLength() const
{
return 2 * (m_dWidth + m_dHeight);
}
private:
double m_dWidth, m_dHeight;
};
class CCircle:public CShape
{
public:
CCircle(double dRadius)
{
m_dRadius = dRadius;
}
double GetLength() const
{
return 3.1415926 * m_dRadius * m_dRadius;
}
private:
double m_dRadius;
};
int main(void)
{
CSquare oSquare(2, 3);
cout << oSquare.GetLength() << endl;
CCircle oCircle(10);
cout << oCircle.GetLength() << endl;
return 0;
}