当前位置: 首页 > article >正文

面向对象试题带答案

一、选择题  

(1)在C++中,关于下列设置参数默认值的描述中,正确的是  (1) 

A)不允许设置参数的默认值

B)设置参数默认值只能在定义函数时设置

C)设置参数默认值时,应该是先设置右边的再设置左边的

D)设置参数默认值时,应该全部参数都设置

(2)编译时多态性通过使用(2)获得。 

A)重载函数   B)虚函数       C)继承    D)析构函数 

(3) 如果一个类至少有一个纯虚函数,那么就称该类为_(3)__。

A 抽象类    B 虚基类    C 派生类    D 以上都不对

(4) 进行文件操作时需要包含__(4) _文件。

A iostream   B fstream   C stdio.h   D stdliB.h

(5) 在C++中,打开一个文件,就是将这个文件与一个_(5)_建立关联;关闭一个文件,就取消这种关联。

A 类    B 流    C 对象    D 结构

(6) 公有成员提供了类对外部的接口,而_(6)__不允许外界访问,但允许派生类的成员访问。

A 公有成员    B 私有成员    C 私有成员函数    D 保护成员

(7)下面关于构造函数的叙述中,正确的叙述是     (7)      

A)引入构造函数是为了对象的自动执行      B)构造函数名必须与类名相同

C)构造函数不能重载         D)构造函数也是成员函数,因此可以被其它函数调用

(8)以下关于函数指针的叙述中,正确的是(8)  。

A) 函数指针用来存放函数入口地址      B)函数指针用来存放函数调用的结果

C) 函数指针用来指示函数的出口地址    D) 函数指针就是指针函数的别名

(9)下列关于继承的描述中,错误的是(9)

A)析构函数不能被继承            B)派生类是基类的组合

C)派生类的成员除了它自己的成员外还包含了它的基类的成员

D)派生类中继承的基类成员的访问权限在派生类中保持不变

(10)以下正确的描述是 (10)  

在C++语言程序中   A)函数的定义可以嵌套,但函数的调用不可以嵌套

                    B)函数的定义不可以嵌套,但函数的调用可以嵌套

                    C)函数的定义和函数的调用均不可以嵌套

                    D)函数的定义和函数的调用均可以嵌套

二、判断题 

1) 函数的参数个数和类型相同,只是返回值不同,这不是重载。

2) 多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。

3) 对单目运算符重载为友员函数时,说明一个形参;重载为成员函数时,不能显式说明形参。

4) 虚函数用virtual关键字说明成员函数。

5) 构造函数说明为虚函数没有意义。

6) 公有成员采用public关键字说明。

7) 友元函数用来说明在类体内的非成员函数,它可以访问类中的所有成员。

8) this指针是系统生成的指向当前被某个成员函数操作对象的指针。

9) 使用运算符new创建的对象,采用delete释放。

10) 对象数组中的元素可以是不同类的对象。

三、阅读以下程序并给出执行结果 

1、

#include<iostream>

using namespace std;

class Add

{

private:

        int x,y;

public:

        Add(int a,int b)

        {

                x=a; y=b;

            cout<<"调用构造函数1"<<endl;

        }

        Add(Add &p)

        {

                x=p.x;      y=p.y;

        cout<<"调用构造函数2"<<endl;

        }

        ~Add()

        {

                cout<<"调用析构函数"<<endl;

        }

        int add(){ return x+y;      }

};

void main()

{

            Add  p1(2,3);

             Add  p2(p1);

            cout<<p2.add()<<endl;

}

2、

#include <iostream>

using namespace std;

class Box

{

public:

Box(int,int,int);       

int volume( );          

private:

int height;

int width;

int length;

};

Box∷Box(int h,int w,int len)   

{

height=h;

width=w;

length=len;

}

int Box∷volume( )                

{return(height*width*length);

}

int main( )

{Box box1(12,25,30);           

cout<<″The volume of box1 is ″<<box1.volume( )<<endl;

Box box2(15,30,21);            

cout<<″The volume of box2 is ″<<box2.volume( )<<endl;

return 0;

}

3、

#include<iostream.h>

class Point

{

 private:

   int X,Y;

public:

  Point(int a=0,int b=0){

        X=a;Y=b;

        cout<<"initializing X="<<X<<",Y="<<Y<<endl;

                }

  Point(Point &p);

  int GetX(){return X;}

  int GetY(){return Y;}

  void Show(){

        cout<<"X="<<X<<",Y="<<Y<<endl;

                }

  ~Point(){

       cout<<"delete…  "<<X<<","<<Y<<endl;

       }

};

Point::Point(Point &p){

   cout<<"Copy Initializing "<<p.X<<","<<p.Y<<endl;

   X=p.X;

   Y=p.Y;

}

void display(Point p){

   p.Show();

   }

void main(void)

{

Point A(24,116);  

cout<<"called display(A)"<<endl;

display(A); 

cout<<"out…"<<endl;   

}

4、

#include <iostream.h>

class Base

{

private:

        int x;

public:

        Base(int a)

        {

                cout<<"constructing Base..."<<endl;

                x=a;

        }

        ~Base()

        {

                cout<<"destructing Base..."<<endl;

        }

};

class Myclass

{

private:

        int n;

public:

        Myclass(int num)

        {

                n=num;

                cout<<"constructing Myclass..."<<endl;

        }

        ~Myclass()

        {

                cout<<"destructing Myclass..."<<endl;

        }

};

class Derive:public Base

{

private:

        int y;

        Myclass bobj;

public:

        Derive(int a,int b,int c):bobj(c),Base(a)

        {

                cout<<"constructing Derive..."<<endl;

                y=b;

        }

        ~Derive()

        {

                cout<<"destructing Derive..."<<endl;

        }

};

void main()

{

        Derive dobj(1,2,3);

}

答案

一、选择题  

(1)  C (2)  A (3)  A  (4)  B  (5)  B   

(6)  D (7)  B (8)  A (9)  D  (10)  B  

二、判断题 

1) 正确;2) 正确;3) 正确;4) 正确;5) 正确;6) 正确;7) 正确;8) 正确;9) 正确;10) 错误;

三、阅读以下程序并给出执行结果 

1、

调用构造函数1

调用构造函数2

5

调用析构函数

调用析构函数

2、

The volume of box1 is 9000

The volume of box2 is 9450

3、

initializing X=24,Y=116

called display(A)

Copy Initializing 24,116

X=24,Y=116

delete… 24,116

out…

delete… 24,116

4、

constructing Base...

constructing Myclass...

constructing Derive...

destructing Derive...

destructing Myclass...

destructing Base...


http://www.kler.cn/a/389273.html

相关文章:

  • 【专题】计算机网络之网络层
  • 【数据结构与算法】第11课—数据结构之选择排序和交换排序
  • 【Webpack实用指南】如何拆分CSS资源(2)
  • Blender进阶:图像纹理节点和映射节点
  • ML 系列: 第 24 节 — 离散概率分布(泊松分布)
  • 「数据要素」行业简报|2024.11.上刊
  • Linux网络管理和修改配置文件
  • HBase 安装与基本操作指南
  • 机器学习与深度学习-1-线性回归从零开始实现
  • MyBatis xml 文件中 SQL 语句的小于号未转义导致报错
  • 高通Quick板上安装编译Ros1 noetic,LeGO_LOAM,FAR_Planner和rslidar_sdk
  • C#里演示使用数学的三角函数
  • 【JavaEE】多线程(1)
  • ssm基于Vue的戏剧推广网站+vue
  • C++ IO流
  • 缺陷的根本原因,出现在代码中的原因可能有哪些?
  • 【架构-37】Spark和Flink
  • rust字符串
  • 如何通过CDN加速提升电商网站双十一购物节用户体验
  • AIGC小红书新赛道,两个平台同时发,操作简单
  • 在 Mac 和 Windows 系统中快速部署 OceanBase
  • 解线性方程组(二)
  • 机器学习—高级优化方法
  • 计划系统学习C#
  • Python __str__()方法
  • 十九、计算机视觉-轮廓检测