C++PTA判断选择整理(第六章到12章)

7-1判断(字符串string)

1.对静态数据成员初始化可以在类内进行。(F)
2.静态数据成员不属于某个对象,在给对象分配存储空间时,不包括静态数据成员所占的空间。(T)
3.静态成员函数属于类而不是类的对象,没有this指针,静态成员函数中不能使用this指针。(T)
4.静态成员函数的实现必须在类体外实现,不能在类体内实现。(F)
5.由于静态成员函数不属于某个特定的对象,因此。不能像一般的成员函数那样随意的访问对象中的非静态数据成员。只能引用类中声明的静态数据成员。如果要引用非静态数据成员,可通过对象引用。(T)
6.常数据成员的值必须初始化,且不能改变。(T)
7.常成员函数既可以被常对象调用,也可以被非常对象调用。(T)

7-1选择

1.关于用string定义字符串,下列选项中错误的是___D_。

A.string s; s = “hello C++”;

B.string s = “hello C++”;

C.string s(“hello C++”);

D.string s[“hello C++”];
2.使用C++标准string类定义一个字符串,需要包含的头文件___B_。

A.
string.h

B.
string

C.
cstring

D.
stdlib.h

3.Variables that are shared by every instances of a class are __D.

A.
public variables

B.
private variables

C.
instance variables

D.
static variables
4.若有下面的语句:

string s="Hello";
s.append("123");
cout << s.at(5) << endl;

则执行后程序的输出结果是(B)

A.o

B.1

C.2

D.3

7-2判断

get()函数不能从流中提取终止字符,终止字符仍留在流中。getline()函数可以从流中提取终止字符,但终止字符被丢弃。(T)

7-2选择

1.下列String类的( B)方法返回指定字符串的一部分。

A.
extractstring()

B.
substring()

C.
Substring()

D.
Middlestring()
2.C++语言支持过程程序设计方法和(A )设计方法。

A.
面向对象

B.
面向函数

C.
面向用户

D.
面向问题
3.在C++中,实现封装性需借助于(B)。

A.
枚举

B.

C.
数组

D.
函数
4.关于用string定义字符串,下列选项中错误的是__D__。

A.
string s; s = “hello C++”;

B.
string s = “hello C++”;

C.
string s(“hello C++”);

D.
string s[“hello C++”];

8-1(继承性:派生类)判断

1.在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。(T)
2.A has-a relationship is implemented via inheritance.(F)
3.类的组合关系可以用“Has-A”描述;类间的继承与派生关系可以用“Is-A”描述(T)

8-1选择

下列程序的执行结果为(C)

#include <iostream>
using namespace std;

class A {
public:
    A() {     cout << "1";    }
    ~A() {    cout << "2";    }
};
class B: public A {
public:
    B() {    cout << "3";    }
    ~B() {    cout << "4";    }
};
int main() {
    B b;
    return 0;
}

A.
1234

B.
1324

C.
1342

D.
3142
解析:先调用父类的构造函数,再调用自己的构造函数;先调用自己的析构函数,再调用父类的析构函数

下列关于派生类构造函数和析构函数的说法中,错误的是
(D)

A.
派生类的构造函数会隐含调用基类的构造函数

B.
如果基类声明了带有形参表的构造函数,则派生类就应当声明构造函数

C.
在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.
在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为
(A)
A.
abc

B.
acb

C.
cab

D.
cba

可以用p.a的形式访问派生类对象p的基类成员a, 其中a是
(D)

A.
私有继承的公有成员

B.
公有继承的私有成员

C.
公有继承的保护成员

D.
公有继承的公有成员

如果多种事物,有一些共同的特点又各自不同的特点,如何编写类来代表这些事物比较合适?(C)

A.
为每种事物独立编写一个类,各之间互相无关

B.
写一个类代表其中一种事物,代表其他事物的类都从这个类派生出来

C.
概括所有事物的共同特点,写一个基类。然后为每种事物写一个类,都从基派生而来

D.
一共就写一个类,包含所有事物的所有特点,然后用一个成员变量作为标记,来区分不同种类的事物

8-1判断

1.面向对象程序设计的继承性鼓励程序员重用被实践验证的高质量软件。(T)
2.在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。(T)

8-1选择

一个类的私有成员(B)

A.
只能被该类的成员函数访问

B.
只能被该类的成员函数和友元函数访问

C.
只能被该类的成员函数、友元函数和派生类访问

D.
以上答案都不对

在公有继承的情况下,在派生类中能够访问的基类成员包括(D)

A.
公有成员

B.
保护成员

C.
公有成员、保护成员和私有成员

D.
公有成员和保护成员

下列关于派生类构造函数和析构函数的说法中,错误的是
(D)

A.
派生类的构造函数会隐含调用基类的构造函数

B.
如果基类声明了带有形参表的构造函数,则派生类就应当声明构造函数

C.
在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.
在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

派生类继承基类的方式有
(D)

A.
public

B.
private

C.
protected

D.
以上都对

假设在公有派生情况下,以下说法不正确的是
(A)

A.
可以将基类对象复制给派生类对象

B.
可以将派生类对象的地址复制给基类指针

C.
可以将派生类对象赋值给基类的引用

D.
可以将派生类对象赋值给基类对象

9-1(多继承)判断

1.面向对象程序设计的继承性鼓励程序员重用被实践验证的高质量软件。(T)
2.多重继承派生类的构造函数,需要调用所有的基类构造函数来完成各基类数据成员的初始化。(T)

选择

1.在C++语言中设置虚基类的目的是( C) 。

A.
简化程序代码

B.
提高程序的运行效率

C.
解决多继承造成的二义性问题

D.
缩短程序的目标代码
2.下列关于继承的描述中,错误的是(D )。

A.
析构函数不能被继承

B.
派生类是基类的组合

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

D.
派生类中继承的基类成员的访问权限到派生类保持不变
3.以下关于C++语言中继承的叙述中,错误的是(D )。

A.
继承是父类和子类之间共享数据和方法的机制

B.
继承定义了一种类与类之间的关系

C.
继承关系中的子类将拥有父类的全部属性和方法

D.
继承仅仅允许单继承,即不允许一个子类有多个父类
4.下列关于类的继承描述中,(D )是正确的。

A.
派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。

B.
派生类也是基类,所以它们是等价的。

C.
派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。

D.
一个基类可以有多个派生类,一个派生类可以有多个基类。

10-1(运算符重载)判断

1.对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。(F)
有些运算符只能重载为友元或成员函数
2.对单目运算符重载为友元函数时,可以说明一个形参。而重载为成员函数时,不能显式说明形参。(T)
3.重载operator+时,返回值的类型应当与形参类型一致。(F)
比如以下程序中,operator+的返回值类型有错:

class A {

int x;
public:

A(int t=0):x(t){ }

int operator+(const A& a1){ return x+a1.x;  }

};
4.In C++, only existing operators can be overloaded.(T)

10-1&10-2选择

1.下列运算符中,( C)运算符不能重载。

A.&&

B.[ ]

C. ::

D. <<
2.下列关于运算符重载的描述中,(D )是正确的。

A.
运算符重载可以改变操作数的个数

B.
运算符重载可以改变优先级

C.
运算符重载可以改变结合性

D.
运算符重载不可以改变语法结构
3.在C++中不能重载的运算符是(A)

A. ?:

B.+

C. -

D. <=
4.能用友元函数重载的运算符是(A)。

A. +

B.=

C. [ ]

D.->
其余三个都用成员函数重载
1.为了能出现在赋值表达式的左右两边,重载的"[]"运算符应定义为:(B)

A.
A operator [ ] (int);

B.
A& operator [ ] (int);

C.
const A operator [ ] (int);

D.
以上答案都不对

11-1(虚函数)判断

1.虚函数是用virtual 关键字说明的成员函数。(T)
2.动态绑定是在运行时选定调用的成员函数的。(T)
3.构造函数可以声明为虚函数。(F)
4.构造函数可以声明为纯虚函数。(F)
5.虚函数不能是类的静态成员。(T)
6.重定义虚函数的派生类必须是公有继承的。(T)
7.作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。(T)

11-1(虚函数)选择

1.关于纯虚函数和抽象类的描述中,( C)是错误的。

A.
纯虚函数是一种特殊的虚函数,它没有具体的实现

B.
抽象类是指具有纯虚函数的类

C.
一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D.
抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
2.
虚析构函数的作用是(C)。

A.
虚基类必须定义虚析构函数

B.
类对象作用域结束时释放资源

C.
delete动态对象时释放资源

D.
无意义
3.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值。
(A)

A.
相同

B.
不同

C.
相容

D.
部分相同
4.
若一个类中含有纯虚函数,则该类称为(C)。

A.
基类

B.
纯基类

C.
抽象类

D.
派生类
5.假设 Aclass为抽象类,下列正确的说明语句是。
(B)

A.
Aclass fun( int ) ;

B.
Aclass * p ;

C.
int fun( Aclass ) ;

D.
Aclass Obj ;
6.关于动态绑定的下列描述中,( D)是错误的。

A.
动态绑定是以虚函数为基础的

B.
动态绑定在运行时确定所调用的函数代码

C.
动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的

D.
动态绑定是在编译时确定操作函数的

11-2选择

1.关于虚函数的描述中,( C)是正确的。

A.
虚函数是一个static 类型的成员函数

B.
虚函数是一个非成员函数

C.
基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数

D.
派生类的虚函数与基类的虚函数具有不同的参数个数和类型
2.
在C++语言中设置虚基类的目的是( C) 。

A.
简化程序代码

B.
提高程序的运行效率

C.
解决多继承造成的二义性问题

D.
缩短程序的目标代码

12-1(模板)判断

pair类模板的作用是将两个数据组成一个数据,用来表示一个二元组或一个元素对,两个数据可以是同一个类型也可以是不同的类型。(T)

12-1选择

1.关于函数模板,描述错误的是(A)。

A.
函数模板必须由程序员实例化为可执行的函数模板

B.
函数模板的实例化由编译器实现

C.
一个类定义中,只要有一个函数模板,则这个类是类模板

D.
类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
2.下列的模板说明中,正确的是。
©

A.
template < typename T1, T2 >

B.
template < class T1, T2 >

C.
template < typename T1, typename T2 >

D.
template ( typedef T1, typedef T2 )
3.假设有函数模板定义如下:
 template
 Max( T a, T b ,T &c)
{ c = a + b ; }
下列选项正确的是( B)。

A.
int x, y; char z ;Max( x, y, z ) ;

B.
double x, y, z ;Max( x, y, z ) ;

C.
int x, y; float z ;Max( x, y, z );

D.
float x; double y, z;Max( x, y, z ) ;
4.建立类模板对象的实例化过程为。
©

A.
基类-派生类

B.
构造函数-对象

C.
模板类-对象

D.
模板类-模板函数
5.模板函数的真正代码是在哪个时期产生的__C__。

A.
源程序中声明函数时

B.
源程序中定义函数时

C.
源程序中调用函数时

D.
运行执行函数时
6.类模板的模板参数_D___。

A.
只可作为数据成员的类型

B.
可作为成员函数的返回类型

C.
可作为成员函数的参数类型

D.
以上三者皆可
7.下列关于pair<>类模板的描述中,错误的是。
©

A.
pair<>类模板定义头文件utility中

B.
pair<>类模板作用是将两个数据组成一个数据,两个数据可以是同一个类型也可以是不同的类型

C.
创建pair<>对象只能调用其构造函数

D.
pair<>类模拟提供了两个成员函数first与second来访问这的两个数据

关于类模板,描述错误的是(A)。

A.
一个普通基类不能派生类模板

B.
类模板可以从普通类派生,也可以从类模板派生

C.
根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

D.
函数的类模板参数需生成模板类并通过构造函数实例化

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值