-
下列程序划线处应填入的正确语句是 【正确答案: C】。
class Base
{ public:
void fun(){ cout<<“Base::fun”<<endl; }};
class Derived:public Base
{ public: void fun()
{ _____________ //显示调用基类的函数fun()
cout<<“Derived::fun”<<endl; }
};A. fun();
B. Base.fun();
C. Base::fun();
D. Base->fun(); -
以下对派生类的描述中,错误的是 【正确答案: C】。
A. 一个派生类可以作为另外一个派生类的基类
B. 派生类至少有一个基类
C. 从派生类中继承的基类成员的访问权限到派生类中保持不变
D. 派生类的成员除了其自己的成员外,还包含了其基类的成员
-
若一个类拥有多个构造函数,则这些构造函数函数之间为 【正确答案: B】。
A. 重复关系B. 重载关系
C. 继承关系
D. 拷贝关系
-
类A中的一个成员函数原型为:void Set(A &a);其中"A &a"的含义为 【正确答案: C】。
A. 指向类A的指针为a
B. 将a的地址值赋给变量set
C. a是类A对象的引用,用来作函数Set的形参
D. 变量A与a按位相与作为函数Set的参数
-
在表达式x+y*2中,+是作为成员函数重载的运算符,是作为非成员函数重载的运算符,则operator+和operator分别有 【正确答案: B】个参数。
A. 1、1
B. 1、2
C. 2、1D. 2、2
-
C++中声明常量的关键字是 【正确答案: D】。
A. extern
B. public
C. virtual
D. const
-
若可以在类外用p.a的形式访问派生类对象p的基类成员a,则a是 【正确答案: C】。
A. 公有继承的私有成员
B. 公有继承的保护成员
C. 公有继承的公有成员
D. 私有继承的公有成员
-
在一个类中,可以对一个操作符进行 【正确答案: D】重载。
A. 1种
B. 不超过2种
C. 不超过3种
D. 多种
-
对于任意一个类,析构函数的个数最多为 【正确答案: B】。
A. 0
B. 1
C. 2
D. 3 -
以下各类函数中, 【正确答案: D】不是类的成员函数。
A. 构造函数
B. 析构函数
C. 拷贝构造函数
D. 友元函数
-
下列关于类和对象的叙述中,错误的是 【正确答案: D】。
A. 对象是类的具体实例
B. 类是对某一类对象的抽象
C. 类和对象的关系是一种数据类型与变量的关系
D. 一个类只能有一个对象
-
在C++类中定义的成员,其默认访问权限为 【正确答案: A】。
A. private
B. public
C. protected
D. static
-
以下选项中不是面向对象程序设计所具有的特性的是 【正确答案: B】。
A. 数据封装
B. 模板
C. 继承
D. 多态性
-
下面判断正确的是 【正确答案: b】。
A. char c[4]=“abc”,d[4]=“abc”; 等价于char c[4]=d[4]=“abc”;
B. char *s=“china”; 等价于char *s; s=“china”;
C. char *a=“china”; 等价于char *a; *a=“china”;
D. char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”};
-
执行以下程序段后,y的值是 【正确答案: b】。
int a[ ]={1,3,5,7,9};
int x=0,y=1, ptr;
ptr=&a[1];
while(!x) { y+=(ptr+x); x++; }A. 24
B. 4
C. 2
D. 1 -
若有定义int a[3][3]={ {1, 2}, {5}, {2, 4, 8} }; 初始值5是数组a存储在内存中的第 【正确答案: A】个元素。
A. 4
B. 3
C. 2
D. 1
-
下面关于C++语言的描述错误的是: 【正确答案: b】
A. C++语言支持数据封装
B. C++语言中引入友元没有破坏封装性
C. C++语言允许函数名和运算符重载
D. C++语言支持动态联编
-
下列说明中const char *p=“ok”; 其中p应该是 【正确答案: c】
A. 指向字符常量的指针
B. 指向字符的常量指针
C. 指向字符串常量的指针
D. 指向字符串的常量指针 -
假设要对类A定义加号操作符重载成员函数,实现两个A类对象的加法,并返回相加结果,则该成员函数的声明语句是: 【正确答案: c】
A. A operator +(A &a, A &b);
B. operator +(A a);
C. A operator +(A &a);
D. A &operator +( ); -
下列不能作为类的成员的是 【正确答案: b】
A. 自身类对象的指针
B. 自身类对象
C. 自身类对象的引用
D. 另一个类的对象
-
假定A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数 成员a()的格式为 【正确答案: b】
A. x.a
B. x.a()
C. x->a
D. (*x).a()
-
关于对象概念的描述中,说法错误的是 【正确答案: a】
A. 对象就是C语言中的结构变量
B. 对象代表着正在创建的系统中的一个实体
C. 对象是类的一个变量
D. 对象之间的信息传递是通过消息进行的
-
类的实例化是指 【正确答案: b】
A.定义类
B.创建类的对象
C.指明具体类
D.调用类的成员
-
所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是 【正确答案: a】
A. 类
B. 对象
C. 函数体
D. 语句块 -
一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 【正确答案: a】
A. 内联函数
B. 重载函数
C. 递归函数
D. 嵌套函数
-
关于this指针使用说法正确的是 【正确答案: a】
A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码。
B. 保证基类私有成员在子类中可以被访问。
C. 保证基类保护成员在子类中可以被访问。
D. 保证基类公有成员在子类中可以被访问。
-
下列说法中正确的是 【正确答案: b】
A.类定义中只能说明函数成员的函数头,不能定义函数体
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
-
有如下类定义:
class sample {
int n;
public:
sample (int i=0):n(i){ }
void setValue(int n0);
};
下列关于setValue成员函数的实现中,正确的是 【正确答案: b】。
A.sample::setValue(int n0){n=n0;}
B.void sample::setValue(int n0){n=n0;}
C.void setValue(int n0){n=n0;}
D.setValue(int n0){n=n0;}
-
在下面的类定义中,错误的语句是 【正确答案: c】
class sample{
public:
sample(int val); //①
~sample( ); //②
private:
int a=2.5; //③
public:
sample( ); //④
};
A.① B.② C.③ D.④
-
在下列函数原型中,可以作为类AA构造函数的是 【正确答案: d】
A.void AA(int); B.int AA( );
C.AA(int) const; D.AA(int)
-
采用函数重载的目的在于 【正确答案: d】
A. 实现共享 B.减少空间
C. 提高速度 D.使用方便,提高可读性
-
下列静态数据成员特性中, 【正确答案: d】是错误的。
A. 说明静态数据成员时前边要加修饰符static;
B. 静态数据成员要在类体外进行初始化;
C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域分辨符;
D. 静态数据成员不是所有对象共有的
-
以下各选项中,正确的函数声明是 【正确答案: c】
A.double func( int x , int y )
B.int func( int x ; int y ) ;
C.float func( int x , int y ) ;
D.char func( int x , y ) ;
-
关于构造函数,下列说法不正确的是 【正确答案: B】。
A. 构造函数的名字和类名相同
B. 构造函数有且只有一个
C. 构造函数在创建对象时自动执行
D. 构造函数无任何函数返回类型
-
类成员的访问权限中, 【正确答案: C】只能被本类的成员函数和其友元函数访问。
A. shareB. public
C. private
D. protected
-
派生类的对象对它的基类成员中 【正确答案: A】是可以访问的。
A. 公有继承的公有成员
B. 公有继承的保护成员
C. 保护继承的保护成员
D. 保护继承的公有成员
-
下列描述错误的是: 【正确答案: a】
A. 在创建对象前,静态成员不存在
B. 静态成员是类的成员
C. 静态成员不能是虚函数
D. 静态成员函数不能直接访问非静态成员 -
实现运行时的多态性采用: 【正确答案: d】
A. 重载函数
B. 构造函数
C. 析构函数
D. 虚函数 -
关于const关键字说法错误的是: 【正确答案: d】
A. const关键字可以修饰对象和成员函数
B. const对象不能被修改
C. const成员函数不能修改类数据成员
D. const可以用于说明类 -
下面关于友元的描述中,错误的是 【正确答案: d】
A. 友元函数可以直接访问该类的私有成员
B. 一个类的友元类中的所有成员函数都是这个类的友元函数
C. 利用友元可以提高程序的运行效率,但却破坏了封装性
D.友元关系不能被继承,是双向可交换的 -
如果类A被说明为类B的友元,则 【正确答案: C】
A. 类A的成员既是类B的成员B. 类B的成员既是类A的成员
C. 类A的成员函数可以访问类B的所有成员
D. 类B的成员函数可以访问类A的所有成员
-
C++中不能被重载的一组运算符是 【正确答案: a】
A. :: ?: . sizeof
B. ?: . sizeof ++ ->
C. :: ?: new delete
D.++ – ?: sizeof -
下列各类函数中,不是类的成员函数的是: 【正确答案: c】
A. 构造函数
B. 析构函数
C. 友元函数
D. 拷贝构造函数 -
定义析构函数时应该注意 【正确答案: c】
A. 其名与类名完全相同
B. 返回类型是void类型
C. 无形参,也不可重载
D. 函数体必须有delete语句 -
考虑函数原型void test(int a,int b=7,char ch=‘*’),下面函数调用中,属于不合法调用的是: 【正确答案: c】
A. test(5);
B. test(5,8);
C. test(6,‘#’);
D. test(0,0,‘*’); -
下列说明中const char*ptr=“hello”;其中ptr应该是: 【正确答案: c】
A. 指向字符常量的指针
B. 指向字符的常量指针
C. 指向字符串常量的指针
D. 指向字符串的常量指针
-
已知print函数是一个类的常成员函数,它无返回值,下列表示中,正确的是 【正确答案: a】
A. void print() const;
B. const void print();
C. void const print();
D. void print(const); -
作用域运算符“::”的功能是: 【正确答案: b】
A. 标识作用域的级别的
B. 指出作用域的范围的
C. 给定作用域的大小的
D. 标识成员是属于哪个类的
-
在公有继承的情况下,基类非私有成员在派生类中的访问权限 【正确答案: D】。
A. 受限制B. 受保护
C. 不受保护
D. 保持不变
-
若有以下说明和语句:
struct worker
{
int no;
char ﹡name;
}work, ﹡p=&work;
则以下引用方式不正确的是 【正确答案: a】。
A. work->no
B. work.no
C. (﹡p).no
D. p->no
-
保护继承时,基类的 【正确答案: C】在派生类中成为保护成员,不能通过派生类的对象直接访问。
A. 任何成员
B. 公有成员和私有成员
C. 公有成员和保护成员
D. 私有成员
-
假定AB为一个类,则执行AB a(2),b[3],*p[4]; 语句时调用该类的构造函数的次数是 【正确答案: b】
A. 3
B. 4
C. 5
D. 9 -
保护派生时,基类的公有成员成为派生类的公有成员;保护成员成为派生类的保护成员,私有成员成为派生类的保护成员。
【正确答案:错误】
正确
错误
c/c++理论基础知识题库3
于 2021-11-27 11:51:58 首次发布