南开大学23年春《面向对象程序设计》在线作业二
奥鹏南开大学新学期作业参考
23春学期(仅限-高起专1903、专升本1903)《面向对象程序设计》在线作业-00002
下面描述中,错误的是( )。
A:在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
B:在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
C:在基类定义的public和protected成员在保护继承的派生类中可见
D:在派生类中不可见的成员要变成可访问的,需要进行访问声明
正确答案问询微信:424329
this指针是C++实现( )的一种机制。
A:抽象
B:封装
C:继承
D:重载
正确答案问询微信:424329
声明一个类的对象时,系统自动调用( )函数。
A:成员函数
B:构造函数
C:析构函数
D:普通函数
正确答案问询微信:424329
下列程序段中具有相同值的是( ) 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:d.b与d.base1::b
B:d.base1::b与 d.base1::b1
C:d.b与 d. b3
D:d.base2::b与 d.base2::b2
正确答案问询微信:424329
read函数的功能是从输入流中读取( )。
A:一个字符
B:当前字符
C:一行字符
D:指定若干个字符
正确答案问询微信:424329
对于任意一个类,析构函数的个数最多为( )。
A:0
B:1
C:2
D:3
正确答案问询微信:424329
关于类模板,描述错误的是( )。
A:一个普通基类不能派生类模板
B:类模板从普通类派生,也可以从类模板派生
C:根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
D:函数的类模板参数须通过构造函数实例化
正确答案问询微信:424329
关于类和对象不正确的说法是( )。
A:类是一种类型,它封装了数据和操作
B:对象是类的实例
C:一个类的对象只有一个
D:一个对象必属于某个类
正确答案问询微信:424329
在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。
A:operator+有两个参数,operator*有两个参数
B:operator+有两个参数,operator*有一个参数
C:operator+有一个参数,operator*有两个参数
D:operator+有一个参数,operator*有一个参数
正确答案问询微信:424329
下面关于类的成员函数描述不正确的是()。
A:静态成员函数内可以直接访问类的非静态成员数据
B:静态成员函数内可以直接访问类的静态成员数据
C:非静态成员函数可以直接访问类的非静态成员数据
D:非静态成员函数可以直接访问类的静态成员数据
正确答案问询微信:424329
若析构函数是虚函数,则delete对析构函数的调用采用( )。
A:静态联编
B:动态联编
C:重载函数
D:多重函数
正确答案问询微信:424329
有关类和对象的说法不正确的是( )。
A:对象是类的一个实例
B:一个类只能有一个对象
C:任何一个对象只能属于一个具体的类
D:类与对象的关系和数据类型和变量的关系相似
正确答案问询微信:424329
通常拷贝构造函数的参数表是( )。
A:某个对象名
B:某个对象的成员名
C:某个对象的引用名
D:某个对象的指针名
正确答案问询微信:424329
关于多继承二义性的描述中,错误的是()。
A:一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
B:解决二义性的最常用的方法是对成员名的限定法
C:基类和派生类同时出现的同名函数,也存在二义性问题
D:一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类, 对该基类成员进行访问时,可能出现二义性
正确答案问询微信:424329
派生类的对象对它的基类成员中()是可以访问的。
A:公有继承的公有成员
B:公有继承的私有成员
C:公有继承的保护成员
D:私有继承的公有成员
正确答案问询微信:424329
下列虚基类的声明中正确的是( )。
A:class virtual B:public A
B:virtual class B:public
C:class B:public A virtual
D:class B: virtual public A
正确答案问询微信:424329
下列关于成员函数特征的描述中,错误的是()。
A:成员函数可以重载
B:成员函数一定是内联函数
C:成员函数可以设置参数的默认值
D:成员函数可以是静态的
正确答案问询微信:424329
类aClass的定义如下:
class aClass
{public:
aClass(){}
aClass(int i){value=new int(i);}
int *val奥鹏南开大学新学期作业参考 代做2元一门ue;
}
若要对类中的value赋值,则下面的语句中,正确的是()。
A:aClass my; my.value=10;
B:aClass my; *my.value=10;
C:aClass my; my.*value=10;
D:aClass my(10);
正确答案问询微信:424329
已知“int a=10;int r=r+20;couta;”,则输出为()。
A:10
B:20
C:30
D:不确定值
正确答案问询微信:424329
下面函数原型声明中,( )声明了fun为纯虚函数。
A:void fun()=0;
B:virtual void fun()=0;
C:virtual void fun();
D:virtual void fun(){};
正确答案问询微信:424329
已知X类.则当程序执行到语句X *array[3];时,调用了( )次构造函数。
A:0
B:1
C:2
D:3
正确答案问询微信:424329
()是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。
A:纯虚函数
B:虚析构函数
C:虚构造函数
D:静态成员函数
正确答案问询微信:424329
下面关于对象概念的描述中,( )是错误的。
A:对象就是C语言中的结构变量
B:对象代表着正在创建的系统中的一个实体
C:对象是一个状态和操作(或方法)的封装体
D:对象之间的信息传递是通过消息进行的
正确答案问询微信:424329
在C++中,要实现动态联编,可以使用( )调用虚函数。
A:类名
B:派生类指针
C:对象名
D:基类指针
正确答案问询微信:424329
关于函数模板,描述错误的是( )。
A:函数模板必须由程序员实例化为可执行的函数模板
B:函数模板的实例化由编译器实现
C:一个类定义中,只要有一个函数模板,则这个类是类模板
D:类模板的成员函数都是函数模板
正确答案问询微信:424329
友元重载运算符obj1obj2被C++编译器解释为()。
A:operator(obj1,obj2)
B:(obj1,obj2)
C:obj1.operator(obj2)
D:obj2.operator(obj1)
正确答案问询微信:424329
在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A:友元函数
B:虚函数
C:构造函数
D:析构函数
正确答案问询微信:424329
已知函数原型:void f(int a, int b=3,char c='*'); 则下面的函数调用中,不合法的调用是()。
A:f(5)
B:f(5,8)
C:f(6, , '#')
D:f(0,0, '#')
正确答案问询微信:424329
下面程序段中是内联函数的是( )。
class location
{
private:
int x ,y;
public:
void init(int initx,int inity) { x=initx; y=inity; }
int getx(){return x;}
int gety();
};
inline int location::gety() {return y;}
A:init (int initx,int inity)
B:getx(),gety()
C:A和B都是
D:A和getx()
正确答案问询微信:424329
在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
A:继承
B:封装
C:多态
D:重载
正确答案问询微信:424329
假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。
A:void get();
B:int k;
C:void make();
D:k=i*j;
正确答案问询微信:424329
在类定义的外部,可以被访问的成员有( )。
A:所有类成员
B:private或protected的类成员
C:public的类成员
D:public或private的类成员
正确答案问询微信:424329
下面叙述错误的是( )。
A:派生类可以使用private派生
B:对基类成员的访问必须是无二义性的
C:基类成员的访问能力在派生类中维持不变
D:赋值兼容规则也适用于多继承的组合
正确答案问询微信:424329
派生类中的成员不能访问基类中的()。
A:私有成员
B:公有成员
C:保护成员
D:以上都可以
正确答案问询微信:424329
构造函数和析构函数都不能重载。
A:对
B:错
正确答案问询微信:424329
基类类型的指针可以指向其派生类对象。
A:错误
B:正确
正确答案问询微信:424329
运算符重载可以改变运算符的优先级。
A:对
B:错
正确答案问询微信:424329
函数的定义不可以嵌套,类的定义可以嵌套。
A:对
B:错
正确答案问询微信:424329
C++基类中,不能被派生类继承的有构造函数和析构函数。
A:对
B:错
正确答案问询微信:424329
C语言中printf命令在c++中改用cin。
A:对
B:错
正确答案问询微信:424329
假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:
AB operator+(AB
A:错误
B:正确
正确答案问询微信:424329
类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。
A:对
B:错
正确答案问询微信:424329
析构函数是一种函数体为空的成员函数。
A:对
B:错
正确答案问询微信:424329
在私有继承中,基类中所有成员对派生类的对象都是不可见的。
A:对
B:错
正确答案问询微信:424329
定义虚函数所用的关键字是virtual。
A:对
B:错
正确答案问询微信:424329
析构函数不能被继承。
A:对
B:错
正确答案问询微信:424329
抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
A:错误
B:正确
正确答案问询微信:424329
类A有如下成员函数:
int A::fun(double x){return (int) x/2;}
int A::fun(int x){return x*2;}
设a为类A的对象,在主函数中执行语句int s=a.fun(6)+a.fun(2.0)后的s值为13。
A:对
B:错
正确答案问询微信:424329
运算符重载是一种特殊的函数重载,其函数名为operator。
A:对
B:错
正确答案问询微信:424329