南开22秋学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业【标准答案】 作者:奥鹏周老师 分类: 南开大学 发布时间: 2022-11-10 00:44 作业答案 联系QQ:3326650399 微信:cs80188 微信二维码 22秋学期(高起本1709-1803、全层次1809-2103)《面向对象程序设计》在线作业-00001 试卷总分:100 得分:100 一、单选题 (共 35 道试题,共 70 分) 1.对虚函数的调用()。 A.必定运用动态联编 B.必定运用静态联编 C.有必要运用动态联编 D.纷歧定运用动态联编 2.下列虚基类的声明中正确的是( )。 A.class virtual B:public A B.virtual class B:public C.class B:public A virtual D.class B: virtual public A 3.已知类X中的一个成员函数阐明如下: Void Set(X &a); 其间,X &a的意义是( )。 A.a是指向X类对象的指针,用来作为Set()的形参 B.将a的地址传递给Set()函数 C.a是X类对象的引证,用来做为Set()的形参 D.以上都不对 4.下面临静态数据成员的描绘中,正确的是( )。 A.静态数据成员是类的一切对象同享的数据 B.类的每个对象都有自己的静态数据成员 C.类的不一样对象有不一样的静态数据成员值 D.静态数据成员不能经过类的对象拜访 5.下列程序中阐明的公有成员是( ) class Location { int X; public: void init(int initX,int initY); private: int Y; public: int GetX(); int GetY(); }; A.X B.init(int initX,int initY) C.GetX(),GetY() D.B和C都是 6.在C++中,经过()的机制能够对原有的类进行扩大和完善以习惯新的需求。 A.承继 B.封装 C.多态 D.重载 7.要求翻开文件 d:\file.dat,可写入数据,正确的句子是( )。 A.ifstream infile("d:\file.dat", ios::in); B.ifstream infile("d:\\file.dat", ios::in); C.ofstream infile("d:\file.dat", ios::out); D.fstream infile("d:\\file.dat", ios::in| ios::out); 8.下列程序段中具有一样值的是( ) class Base {int b;}; class Base1:virtual public base{int b1;}; class Base2:virtual public base{int b2;}; class derived:public base 1,public base 2{int b3;}; derived d; A.b与d.base1::b B.base1::b与 d.base1::b1 C.b与 d. b3 D.base2::b与 d.base2::b2 9.当一个派生类私有承继一个基类时,基类中的一切公有成员和保护成员变成派生类的( )。 A.public成员 B.private成员 C.protected成员 D.友元 10.假定X为一个类,履行X a[3],*p[2];句子时会自动调用该类的结构函数( )次。 A.2 B.3 C.4 D.5 11.下列关于结构函数调用次序的描绘中,正确的是()。 A.创立派生类对象时,先调用基类的结构函数,后调用派生类的结构函数 B.创立基类对象时,先调用基类的结构函数,后调用派生类的结构函数 C.创立派生类对象时,先调用派生类的结构函数,后调用基类的结构函数 D.创立基类对象时,先调用派生类的结构函数,后调用基类的结构函数 12.若类中有指针成员变量,则应编写(),使得在对象毁掉时可以自动调用该函数开释指针成员变量所指向的内存空间。 A.友元函数 B.虚函数 C.结构函数 D.析构函数 13.关于下面程序段说法正确的是( ) class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1); A.句子obj2(obj1);的功用是用对象obj1初始化具有一样类类型的对象obj2 B.句子obj2(obj1);的功用是用对象obj2初始化具有一样类类型的对象obj1 C.X(X&x)中的&符号能够删去 D.X(X&x)函数中不能拜访对象的私有成员 14.关于虚函数,下列表述正确的是( )。 A.假如在重界说虚函数时运用virtual,则该重界说函数依然是虚函数 B.虚函数不得声明为静态函数 C.虚函数不得声明为另一个类的友元函数 D.派生类有必要从头界说基类的虚函数 15.关于纯虚函数和笼统类的描绘中,错误的是()。 A.纯虚函数是一种特别的虚函数,它没有详细的完成。 B.笼统类是指具有纯虚函数的类。 C.一个基类中有纯虚函数,该类的派生类必定不再是笼统类。 D.笼统类作为基类来运用,其纯虚函数的完成由派生类给出。 16.下列关于结构函数说法不正确的是()。 A.结构函数有必要与类同名 B.结构函数能够省掉不写 C.结构函数有必要有回来值 D.在结构函数中能够对类中的成员进行初始化 17.若析构函数是虚函数,则delete对析构函数的调用选用( )。 A.静态联编 B.动态联编 C.重载函数 D.多重函数 18.当一个派生类公有承继一个基类时,基类中的一切公有成员变成派生类的( )。 A.public成员 B.private成员 C.protected成员 D.友元 19.程序在调用重载函数时,依据()区别究竟要调用哪个函数。 A.函数名 B.回来值类型 C.参数个数和类型 D.以上都能够 20.下列关于对象数组的描绘中,错误的是( )。 A.对象数组的下标是从0开端的 B.对象数组的数组名是一个常量指针 C.对象数组的每个元素是同一个类的对象 D.对象数组只能赋初值,而不能在界说后赋值 21.“#include ”是()预处理指令。 A.宏界说 B.文件包括 C.条件编译 D.工程装备 22.下面叙说不正确的是( )。 A.基类的保护成员在派生类中依然是保护的 B.基类的保护成员在公有派生类中依然是保护的 C.基类的保护成员在私有派生类中是私有的 D.对基类成员的拜访有必要是无二义性 23.下面临友元的错误描绘是( )。 A.关键词friend用于声明友元 B.一个类的成员函数能够是另一个类的友元 C.友元函数拜访对象的成员不受拜访特性影响 D.友元函数经过this指针拜访对象成员 24.假如类A被阐明成类B的友元,则()。 A.类A的成员函数不得拜访类B的一切成员 B.类A的成员函数能够拜访类B的一切成员 C.类A的成员即类B的成员 D.类B的成员即类A的成员 25.一个类的友元函数可以拜访该类的( )。 A.私有成员 B.保护成员 C.公有成员 D.一切成员 26.下列关于复制结构函数的描绘中,错误的是()。 A.一个类能够界说多个复制结构函数 B.若不决义复制结构函数,则系统会供给一个默许复制结构函数 C.当类中有指针成员变量时,一般要为这个类界说一个复制结构函数来完成深复制 D.复制结构函数中的参数按引证方法传递 27.下列关于运算符重载的描绘中,()是正确的。 A.运算符重载能够改动操作数的个数 B.运算符重载能够改动优先级 C.运算符重载能够改动结合性 D.运算符重载不可以以改动语法结构 28.下列( )是结构函数的特征。 A.结构函数在创立对象时自动调用 B.结构函数不可以以重载 C.结构函数不可以以设置默许参数 D.结构函数有必要指定函数类型 29.履行句子“string str("abc");”时,系统会自动调用string类的结构函数()。 A.string() B.string(const char *s) C.string(const string &str) D.string(size_type n, char c) 30.以成员函数方法重载运算符“>”,则obj1>obj2被C++编译器解说为()。 A.operator>(obj1,obj2) B.>(obj1,obj2) C.obj1.operator>(obj2) D.obj2.operator>(obj1) 31.已知“float *p; p=new float[2];”,若要开释p所指向的堆中的这些字节,下列句子正确的是()。 A.delete p; B.delete p[]; C.delete []p; D.delete p[2]; 32.树立类模板对象的实例化过程为( )。 A.基类->派生类 B.结构函数->对象 C.模板类->对象 D.模板类->模板函数 33.吊销对象时,系统自动调用( )函数。 A.成员函数 B.结构函数 C.析构函数 D.普通函数 34.下列关于赋值运算符重载的说法中正确的是()。 A.回来值一般是以引证方法回来的对象,而函数体中老是用句子“return *this;”回来this指针所指向的对象 B.赋值运算符只能以非成员函数的方法重载 C.赋值运算符既能够以成员函数的方法重载,又能够以非成员函数的方法重载 D.以上均不正确 35.关于动态相关的下列叙说中,()是错误的。 A.动态相关是以虚函数为基础的 B.动态相关调用虚函数操作是指向对象的指针或引证 C.动态相关是在运转时断定所调用的函数代码的 D.动态相关是在编译时断定操作函数的 二、判别题 (共 15 道试题,共 30 分) 36.界说重载函数时,应确保函数类型有所不一样。 37.运算符[]只能用成员运算符来重载,不能用友元运算符来重载。 38.纯虚函数是一种特别的成员函数,它是一种没有详细完成的虚函数。 39.已知Circle类对象c,Circle类中有一个setCenter成员函数,假如c.setCenter(...)回来值依然是c,则setCenter函数中的return句子应写作return this;。 40.当一个函数的回来值是类对象时,则该函数履行完毕后会自动调用复制结构函数初始化一个暂时对象。 41.在类内部界说的public数据能够在类外进行存取。 42.界说虚函数所用的关键词是virtual。 43.重载函数能够带默许参数值,但要留意二义性。 44.某类中的友元类的一切成员函数能够存取或修正该类中的私有成员。 45.结构函数阐明为纯虚函数是没有含义的。 46.函数的参数个数和类型都一样,仅仅回来值不一样,这不是重载函数。 47.只要回来引证的函数能够作为赋值句子的左值。 48.翻开ASCII码流文件和二进制流文件时,翻开方法是一样的。 49.运算符重载实践上是对已有的运算符从头界说其功用。 50.类的静态成员函数中不能拜访非静态成员。 作业答案 联系QQ:3326650399 微信:cs80188 微信二维码
试卷总分:100 得分:100
一、单选题 (共 35 道试题,共 70 分)
1.对虚函数的调用()。
A.必定运用动态联编
B.必定运用静态联编
C.有必要运用动态联编
D.纷歧定运用动态联编
2.下列虚基类的声明中正确的是( )。
A.class virtual B:public A
B.virtual class B:public
C.class B:public A virtual
D.class B: virtual public A
3.已知类X中的一个成员函数阐明如下: Void Set(X &a); 其间,X &a的意义是( )。
A.a是指向X类对象的指针,用来作为Set()的形参
B.将a的地址传递给Set()函数
C.a是X类对象的引证,用来做为Set()的形参
D.以上都不对
4.下面临静态数据成员的描绘中,正确的是( )。
A.静态数据成员是类的一切对象同享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不一样对象有不一样的静态数据成员值
D.静态数据成员不能经过类的对象拜访
5.下列程序中阐明的公有成员是( ) class Location { int X; public: void init(int initX,int initY); private: int Y; public: int GetX(); int GetY(); };
A.X
B.init(int initX,int initY)
C.GetX(),GetY()
D.B和C都是
6.在C++中,经过()的机制能够对原有的类进行扩大和完善以习惯新的需求。
A.承继
B.封装
C.多态
D.重载
7.要求翻开文件 d:\file.dat,可写入数据,正确的句子是( )。
A.ifstream infile("d:\file.dat", ios::in);
B.ifstream infile("d:\\file.dat", ios::in);
C.ofstream infile("d:\file.dat", ios::out);
D.fstream infile("d:\\file.dat", ios::in| ios::out);
8.下列程序段中具有一样值的是( ) class Base {int b;}; class Base1:virtual public base{int b1;}; class Base2:virtual public base{int b2;}; class derived:public base 1,public base 2{int b3;}; derived d;
A.b与d.base1::b
B.base1::b与 d.base1::b1
C.b与 d. b3
D.base2::b与 d.base2::b2
9.当一个派生类私有承继一个基类时,基类中的一切公有成员和保护成员变成派生类的( )。
A.public成员
B.private成员
C.protected成员
D.友元
10.假定X为一个类,履行X a[3],*p[2];句子时会自动调用该类的结构函数( )次。
A.2
B.3
C.4
D.5
11.下列关于结构函数调用次序的描绘中,正确的是()。
A.创立派生类对象时,先调用基类的结构函数,后调用派生类的结构函数
B.创立基类对象时,先调用基类的结构函数,后调用派生类的结构函数
C.创立派生类对象时,先调用派生类的结构函数,后调用基类的结构函数
D.创立基类对象时,先调用派生类的结构函数,后调用基类的结构函数
12.若类中有指针成员变量,则应编写(),使得在对象毁掉时可以自动调用该函数开释指针成员变量所指向的内存空间。
A.友元函数
B.虚函数
C.结构函数
D.析构函数
13.关于下面程序段说法正确的是( ) class X { private: int n; public: X(X&); }; X::X(X&x) {n=x.n} X obj1,obj2(obj1);
A.句子obj2(obj1);的功用是用对象obj1初始化具有一样类类型的对象obj2
B.句子obj2(obj1);的功用是用对象obj2初始化具有一样类类型的对象obj1
C.X(X&x)中的&符号能够删去
D.X(X&x)函数中不能拜访对象的私有成员
14.关于虚函数,下列表述正确的是( )。
A.假如在重界说虚函数时运用virtual,则该重界说函数依然是虚函数
B.虚函数不得声明为静态函数
C.虚函数不得声明为另一个类的友元函数
D.派生类有必要从头界说基类的虚函数
15.关于纯虚函数和笼统类的描绘中,错误的是()。
A.纯虚函数是一种特别的虚函数,它没有详细的完成。
B.笼统类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类必定不再是笼统类。
D.笼统类作为基类来运用,其纯虚函数的完成由派生类给出。
16.下列关于结构函数说法不正确的是()。
A.结构函数有必要与类同名
B.结构函数能够省掉不写
C.结构函数有必要有回来值
D.在结构函数中能够对类中的成员进行初始化
17.若析构函数是虚函数,则delete对析构函数的调用选用( )。
A.静态联编
B.动态联编
C.重载函数
D.多重函数
18.当一个派生类公有承继一个基类时,基类中的一切公有成员变成派生类的( )。
A.public成员
B.private成员
C.protected成员
D.友元
19.程序在调用重载函数时,依据()区别究竟要调用哪个函数。
A.函数名
B.回来值类型
C.参数个数和类型
D.以上都能够
20.下列关于对象数组的描绘中,错误的是( )。
A.对象数组的下标是从0开端的
B.对象数组的数组名是一个常量指针
C.对象数组的每个元素是同一个类的对象
D.对象数组只能赋初值,而不能在界说后赋值
21.“#include
A.宏界说
B.文件包括
C.条件编译
D.工程装备
22.下面叙说不正确的是( )。
A.基类的保护成员在派生类中依然是保护的
B.基类的保护成员在公有派生类中依然是保护的
C.基类的保护成员在私有派生类中是私有的
D.对基类成员的拜访有必要是无二义性
23.下面临友元的错误描绘是( )。
A.关键词friend用于声明友元
B.一个类的成员函数能够是另一个类的友元
C.友元函数拜访对象的成员不受拜访特性影响
D.友元函数经过this指针拜访对象成员
24.假如类A被阐明成类B的友元,则()。
A.类A的成员函数不得拜访类B的一切成员
B.类A的成员函数能够拜访类B的一切成员
C.类A的成员即类B的成员
D.类B的成员即类A的成员
25.一个类的友元函数可以拜访该类的( )。
A.私有成员
B.保护成员
C.公有成员
D.一切成员
26.下列关于复制结构函数的描绘中,错误的是()。
A.一个类能够界说多个复制结构函数
B.若不决义复制结构函数,则系统会供给一个默许复制结构函数
C.当类中有指针成员变量时,一般要为这个类界说一个复制结构函数来完成深复制
D.复制结构函数中的参数按引证方法传递
27.下列关于运算符重载的描绘中,()是正确的。
A.运算符重载能够改动操作数的个数
B.运算符重载能够改动优先级
C.运算符重载能够改动结合性
D.运算符重载不可以以改动语法结构
28.下列( )是结构函数的特征。
A.结构函数在创立对象时自动调用
B.结构函数不可以以重载
C.结构函数不可以以设置默许参数
D.结构函数有必要指定函数类型
29.履行句子“string str("abc");”时,系统会自动调用string类的结构函数()。
A.string()
B.string(const char *s)
C.string(const string &str)
D.string(size_type n, char c)
30.以成员函数方法重载运算符“>”,则obj1>obj2被C++编译器解说为()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
31.已知“float *p; p=new float[2];”,若要开释p所指向的堆中的这些字节,下列句子正确的是()。
A.delete p;
B.delete p[];
C.delete []p;
D.delete p[2];
32.树立类模板对象的实例化过程为( )。
A.基类->派生类
B.结构函数->对象
C.模板类->对象
D.模板类->模板函数
33.吊销对象时,系统自动调用( )函数。
A.成员函数
B.结构函数
C.析构函数
D.普通函数
34.下列关于赋值运算符重载的说法中正确的是()。
A.回来值一般是以引证方法回来的对象,而函数体中老是用句子“return *this;”回来this指针所指向的对象
B.赋值运算符只能以非成员函数的方法重载
C.赋值运算符既能够以成员函数的方法重载,又能够以非成员函数的方法重载
D.以上均不正确
35.关于动态相关的下列叙说中,()是错误的。
A.动态相关是以虚函数为基础的
B.动态相关调用虚函数操作是指向对象的指针或引证
C.动态相关是在运转时断定所调用的函数代码的
D.动态相关是在编译时断定操作函数的
二、判别题 (共 15 道试题,共 30 分)
36.界说重载函数时,应确保函数类型有所不一样。
37.运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
38.纯虚函数是一种特别的成员函数,它是一种没有详细完成的虚函数。
39.已知Circle类对象c,Circle类中有一个setCenter成员函数,假如c.setCenter(...)回来值依然是c,则setCenter函数中的return句子应写作return this;。
40.当一个函数的回来值是类对象时,则该函数履行完毕后会自动调用复制结构函数初始化一个暂时对象。
41.在类内部界说的public数据能够在类外进行存取。
42.界说虚函数所用的关键词是virtual。
43.重载函数能够带默许参数值,但要留意二义性。
44.某类中的友元类的一切成员函数能够存取或修正该类中的私有成员。
45.结构函数阐明为纯虚函数是没有含义的。
46.函数的参数个数和类型都一样,仅仅回来值不一样,这不是重载函数。
47.只要回来引证的函数能够作为赋值句子的左值。
48.翻开ASCII码流文件和二进制流文件时,翻开方法是一样的。
49.运算符重载实践上是对已有的运算符从头界说其功用。
50.类的静态成员函数中不能拜访非静态成员。
作业答案 联系QQ:3326650399 微信:cs80188