青青 发表于 2023-3-4 10:23:01

面向对象程序设计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]
查看完整版本: 面向对象程序设计23春北理工模拟四