面向对象程序设计23春北理工模拟四
[试题分类]:面向对象程序设计1. 在C++中,支持数据封装的工具是
A. 类
B. 对象
C. 重载
D. 函数
答案:A
题型:单选题
知识点:1.1.2面向对象的有关概念
难度:1
2. 下列符号中,属于C++关键字的是
A. repeat
B. begin
C. iostream
D. static
答案:D
题型:单选题
知识点:1.3 C++语言的词法及词法规则
难度:1
3. {
有如下语句序列:
int x=100,&r=x;
cout<<&x<<'-'<<r<<endl;
已知其中变量x的地址为0012FF7C,则执行该语句序列的输出结果为
}
A. 0012FF7C-0012FF7C
B. 100-0012FF7C
C. 0012FF7C-100
D. 100-100
答案:C
题型:单选题
知识点:2.5.4引用
难度:2
4. 能够解决程序中代码量不大,但却被频繁调用的函数的调用效率问题的是
A. 友元函数
B. 重载函数
C. 虚函数
D. 内联函数
答案:
题型:单选题
知识点:4.4 内联函数
难度:1
5. 下列选项中,作为重载函数调用时选择依据的是
A. 参数名字
B. 函数体
C. 函数名称
D. 函数返回类型
答案:C
题型:单选题
知识点:4.5 函数重载
难度:1
6. 下列关于类定义的叙述中,错误的是
A. 类定义中包括数据成员和成员函数的声明
B. 类成员的默认访问权限是私有的
C. 只能在类体内对数据成员进行初始化
D. 成员函数必须在类体内声明
答案:C
题型:单选题
知识点:5.1 类的定义
难度:1
7. 下列关于类和对象的叙述中,错误的是
A. 类具有封装性
B. 对象是类的具体实例
C. 类对象可以访问类的全部成员
D. 类是所有对象的共同的行为和不同的状态的集合体
答案:C
题型:单选题
知识点:5.2 对象的定义
难度:2
8. 下列关于静态成员的叙述中,错误的是
A. 静态成员不属于对象,是类的共享成员
B. 静态数据成员要在类外定义和初始化
C. 调用静态成员函数时可以通过类激活
D. 非静态成员函数也可以操作静态数据成员
答案:B
题型:单选题
知识点:5.5 静态成员
难度:2
9. 下列关于友元的叙述中,错误的是
A. 关键字friend用于声明友元
B. 一个类的成员函数可以是另一个类的友元
C. 友元函数访问对象的成员不受访问特性影响
D. 友元函数也是成员函数
答案:D
题型:单选题
知识点:5.6 友元
难度:1
10. 若有声明“const MyClass *ptr;”,则下列叙述中,正确的是
A. ptr是一个类对象
B. ptr是一个常量指针
C. ptr指向一个常量
D. ptr是一个指向常量的常指针
答案:
题型:单选题
知识点:6.3.2 常指针和常引用
难度:2
11. 当派生类从基类私有继承时,基类中的公有成员和保护成员成为派生类的
A. 保护成员和私有成员
B. 公有成员
C. 私有成员
D. 保护成员
答案:C
题型:单选题
知识点:7.1.3 基类成员在派生类中的访问权限
难度:1
12. 在一个派生类对象结束其生命周期时,下列叙述中正确的是
A. 先调用基类的析构函数,后调用派生类的析构函数
B. 先调用派生类的析构函数,后调用基类的析构函数
C. 如果基类没有定义析构函数,则只调用派生类的析构函数
D. 如果派生类没有定义析构函数,则只调用基类的析构函数
答案:B
题型:单选题
知识点:7.2.1 派生类构造函数和析构函数
难度:1
13. 下列运算符中,可以重载为类的友元函数的运算符是
A. =
B. <<
C. .
D. ()
答案:B
题型:单选题
知识点:8.2 运算符重载
难度:1
14. 下列选项中,调用虚函数时可能产生动态联编的是
A. 对象名
B. 派生类名
C. 基类指针
D. 派生类指针
答案:C
题型:单选题
知识点:8.3.2 动态联编
8.4 虚函数
难度:2
15. 下列选项中,属于istream类对象是
A. cin
B. cout
C. cerr
D. clog
答案:A
题型:单选题
知识点:9 C++的I/O流库
难度:1
16. 若有函数声明“void fun(int *x);”,则函数fun是按 方式传递参数的。
答案:引用
题型:填空题
知识点:4.2 函数的调用
难度:1
17. 所有在类内部定义的成员函数都说明为 函数。
答案:内联
题型:填空题
知识点:5.4.1 内联函数和外联函数
难度:1
18. {
请将划线处默认构造函数的定义补充完整,使语句“Point p1;”创建的p1对象为原点。
class Point \{
public:
:x(xx),y(yy) {}
private:
int x,y;
\};
}
答案:Point(int xx=0, int yy=0)
题型:填空题
知识点:5.3.1 构造函数和析构函数
难度:2
19. 是一个隐含于类的每一个非静态成员函数中的特殊指针。
答案:this指针
题型:填空题
知识点:6.1.3 this指针
难度:1
20. {
下列程序运行后输出10,请将划线处的语句补充完整。
#include<iostream>
using namespace std;
class MyClass \{
public:
MyClass(int x):val(x) \{ \}
void Print() \{ cout<<val<<endl; \}
private :
int val ;
\};
int main() \{
MyClass obj(10);
Print();
return 0;
\}
}
答案:
题型:填空题
知识点:5.2 对象的定义
难度:1
21. {
下列程序运行后的输出结果是 。
#include<iostream>
using namespace std;
class MyClass \{
public:
MyClass(int x) \{ cout<<x; \}
~MyClass() { cout<<0; }
\};
int main() \{
MyClass obj1(1),obj2(obj1),&ptr=obj1;
return 0;
\}
}
答案:100
题型:填空题
知识点:5.3 对象的初始化
难度:3
22. 有两个类M和C,其中类C定义如下:class C \{ public: M m; \};。若建立类C的对象object,则对象m和对象object中后被初始化的是对象 。
答案:object
题型:填空题
知识点:6.4.1 子对象
难度:2
23. 为了解决多继承产生的 问题,在C++中引入了虚基类。
答案:二义性
题型:填空题
知识点:7.3.3 多继承的二义性问题
难度:1
24. 如果类Alpha继承自类Beta,则类Beta称为 类。
答案:基类或父类
题型:填空题
知识点:7.1 基类和派生类
难度:1
25. {
下列程序执行后的输出结果是0,11,12,,请将划线处的语句补充完整。
#include <iostream>
using namespace std;
class A \{
public:
A(int aa=0) : a(aa) \{ \}
void Print() const \{ cout<<a<<','; \}
private:
int a;
\};
class B : public A \{
public:
B(int aa) : b(aa+1), \{ \}
void Print() const \{ A::Print();cout<<b<<',';c.Print(); \}
private:
int b;
A c;
\};
int main() \{
B obj(10);
obj.Print();
return 0;
\}
}
答案:
题型:填空题
知识点:7.2.1 派生类构造函数和析构函数
难度:2
26. 改错题
{
下列程序中有三个错误,请指出错误所在行号并改正错误,使程序的输出结果为
The perimeter is 62.8
The area is 314
源文件清单如下:
Line1: #include <iostream>
Line2: using namespace std;
Line3: const double PI=3.14;
Line4: class Circle \{
Line5: public:
Line6: void Circle(int r) \{ radius=r; \}
Line7: void Display();
Line8: private:
Line9: const int radius;
Line10: \};
Line11: void Display() \{
Line12: cout<<"The perimeter is "<<2*PI*radius<<endl;
Line13: cout<<"The area is "<<PI*radius*radius<<endl;
Line14: \}
Line15: int main() \{
Line16: Circle c(10);
Line17: c::Display();
Line18: return 0;
Line19: \}
}
答案:Line6: Circle(int r) : radius(r) { }
题型:改错题
知识点:5.3 对象的初始化
6.3.4 常数据成员
难度:2
答案:Line11: void Circle::Display() {
题型:改错题
知识点:5.1 类的定义
难度:1
答案:Line17: c.Display();
题型:改错题
知识点:5.2.2 对象成员的表示方法
难度:1
27. {
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class A \{
public:
A(int i):r1(i) \{ cout<<r1<<endl; \}
~A() \{ cout<<'~'<<r1<<endl; \}
void print() \{cout<<"Empty:"<<r1<<endl;\}
void print() const \{cout<<"Const:"<<r1<<endl;\}
void print(int x) \{cout<<"Param:"<<x*x<<endl;\}
private:
int r1;
\};
int main() \{
A a1(1),a2(2);
a1.print();
a2.print(3);
return 0;
\}
}
答案:
1
2
Empty:1
Param:9
~2
~1
题型:阅读程序题
知识点:5.3 对象的初始化
5.4 成员函数的特性
6.3.3 常成员函数
难度:2
28. {
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class One\{
public:
One() \{ cout<<"One"<<endl; \}
~One() \{ cout<<"~One"<<endl; \}
\};
class Two\{
public:
Two() \{ cout<<"Two"<<endl; \}
~Two() \{ cout<<"~Two"<<endl; \}
\};
class Base1\{
public:
Base1() \{ cout<<"Base1"<<endl; \}
~Base1() \{ cout<<"~Base1"<<endl; \}
\};
class Base2\{
public:
Base2() \{ cout<<"Base2"<<endl; \}
~Base2() \{ cout<<"~Base2"<<endl; \}
\};
class Derived : public Base2, public Base1\{
public:
Derived() \{ cout<<"Derived"<<endl; \}
~Derived() \{ cout<<"~Derived"<<endl; \}
private:
One o1;
Two t1;
\};
int main()\{
Derived obj;
return 0;
\}
}
答案:
Base2
Base1
One
Two
Derived
~Derived
~Two
~One
~Base1
~Base2
题型:阅读程序题
知识点:7.3.2 多继承的构造函数和析构函数,
难度:2
29. {
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class Animal \{
public:
virtual char* getType() const \{ return "Animal"; \}
virtual char* getVoice() const \{ return "Voice"; \}
\};
class Dog : public Animal \{
public:
char* getType() const \{ return "Dog"; \}
char* getVoice() const \{ return "Woof"; \}
\};
void type(Animal& a) \{ cout<<a.getType(); \}
void speak(Animal a) \{ cout<<a.getVoice(); \}
int main() \{
Dog d;
type(d);
cout<<" speak ";
speak(d);
cout<<endl;
return 0;
\}
}
答案:Dog Speak Voice
题型:阅读程序题
知识点:8.3.2 动态联编
8.4 虚函数
难度:2
页:
[1]