❤️喂,不要看了,快来和我复习一下C++习题吧(附答案)❤️

一:单选题(本题共20小题,每题3分,共60分)
1、下列哪个类型函数不适合声明为内联函数( )
A.函数体语句较多 B.函数体语句较少
C.函数执行时间较短 D.函数执行时间过长

2、int Func(int,int);不可与下列哪个函数构成重载(   )

A.int Func(int,int,int); B.double Func(int,int);
C.double Func(double,double); D.double Func(int,double);

3、设类 A将其它类对象作为成员, 则建立 A 类对象时, 下列描述正确的是( )
A.A 类构造函数先执行 B.成员构造函数先执行
C.两者并行执行 D.不能确定

4、下列描述错误的是( )
A.在创建对象前,静态成员不存在 、
B.静态成员是类的成员
C.静态成员不能是虚函数
D.静态成员函数不能直接访问非静态成员

5、C++ 中,关于构造函数和析构函数,正确的描述是( )。
A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数
B) 构造函数和析构函数均可以重载
C) 已知类 Student 以及 Student *p; 在使用 p=new Student; 时自动调用无参构造函数创建动态对象,在 delelte p; 时自动调用析构函数释放动态对象
D) 析构函数都不可以成为虚函数

6、 关于拷贝构造函数的描述正确的是( )。
A) 通常的拷贝构造函数的参数是对象的指针类型
B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数
C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数
D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数

7、有关静态成员的描述错误的是( )。
A) 某个类的静态数据成员由该类的所有对象所共享
B) 类的公有静态数据成员既可以用类的对象访问, 也可以直接用作用域运算符“::”通过类名来访问
C) 静态数据成员既可以是私有成员,也可以是公有成员
D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作

8、 一个类的友元函数或友元类能够通过成员访问运算符访问该类的( )。
A) 所有成员 B) 私有成员 C) 保护成员 D) 公有成员

9、在派生类中重新定义虚函数时,除了( ),其他方面都必须与基类中相应的虚函数保持一致。
A) 参数个数 B) 参数类型 C) 函数名称 D) 函数体

10、对于int *pa[5];的描述中,正确的是:(     )
A)pa是一个指向数组的指针,所指向的数组是5个int型元素
B)pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C)pa[5]表示数组的第5个元素的值,是int型的值
D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针

11、下面关于虚函数和函数重载的叙述不正确的是( )
A. 虚函数不是类的成员函数
B. 虚函数实现了C++的多态性
C. 函数重载允许非成员函数,而虚函数则不行
D. 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定

12、设已经有A,B,C,D 4个类的定义,程序中A,B,C,D析构函数调用顺序为(   )

C c;
void main()
{
A*pa=new A();
B b;
static D d;
delete pa;
}
A. A B C D
B. A B D C
C. A C D B
D. A C B D

13、写出下面程序的输出结果(   )

class A
{
public:
void FuncA()
{
printf( “FuncA called\n” );
}
virtual void FuncB()
{
printf( “FuncB called\n” );
}
};
class B : public A
{
public:
void FuncA()
{
A::FuncA();
printf( “FuncAB called\n” );
}
virtual void FuncB()
{
printf( “FuncBB called\n” );
}
};
void main( void )
{
B b;
A *pa;
pa = &b;
A *pa2 = new A;
pa->FuncA();
pa->FuncB();
pa2->FuncA();
pa2->FuncB();
delete pa2;
}
A.
FuncA called
FuncB called
FuncA called
FuncB called

B.
FuncA called
FuncBB called
FuncA called
FuncB called
C.
FuncA called
FuncBB called
FuncAB called
FuncBB called

D.
FuncAB called
FuncBB called
FuncA called
FuncB called

14、以下运行时的输出结果是( )
#include
using namespace std;
class MyClass
{
public:
MyClass(int i = 0)
{
cout << i;
}
MyClass(const MyClass &x)
{
cout << 2;
}
MyClass &operator=(const MyClass &x)
{
cout << 3;
return *this;
}
~MyClass()
{
cout << 4;
}
};
int main()
{
MyClass obj1(1), obj2(2);
MyClass obj3 = obj1;
return 0;
}

A.11214444
B.11314444
C.122444
D.123444

15、如果有如下函数模板的定义,则对函数func调用不正确的是(    )

template
T func(T x,T y)
{
return x+y;
}

A. func(3,5);
B. func<>(3,5);
C. func(3,2.5);
D. func(3,2.5)

16、假设A为抽象类,下列声明(  )是正确的

A. A fun(int);
B. A * p;
C. int fun(A);
D. A a;

17、如果类A被声明成类B的友元,则(  )

A. 类A的成员即是类B的成员
B. 类B的成员即是类A的成员
C. 类A的成员函数可以访问类B的所有成员
D. 类B的成员函数可以访问类A的所有成员

18、下面关于友元描述中,错误的是(  )

A. 友元函数可以直接访问该类的私有成员
B. 一个类的友元类中的所有成员函数都是这个类的友元函数
C. 利用友元类可以提高程序的效率,但却破坏了封装性
D. 友元类不能被继承,是双向可交换的

19、this指针存在的目的是(  )

A. 保证基类的公有成员可以再子类中被访问
B. 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C. 保证基类protected成员在子类中可以被访问
D. 保证基类私有成员在子类中可以被访问

20、假定CSomething是一个类,执行下面这些语句之后,内存里创建了(    )个CSomething对象。

CSomething a();
void main()
{
CSomething b(2);
CSomething c[3];
CSomething &ra = b;
CSomething d=b;
CSomething *pA = c;
CSomething *p = new CSomething(4);
}

A.10
B.7
C.6
D.5
二:多选题(本题共5小题,每题2分,共10分)
1、已知系统中已定义函数func,其原形是,则下列函数中可以加以重载的是( )。
int func(char c,int k=0,double d=100.0);
A.int func ();
B.int func (char c);
C.int func (char,int);
D.int func (char,int,int);

2、若有如下的定义则下列表达式中,(    )是正确的(无语法错误)。 

class sam
{
public:
int num;
void print(){cout< < num;}
}x,*p=&x;
A. (*p).print( );
B. p->num=10;
C. p.num;
D. x.num=5;

4、下列描述中错误的是(    )

A. 所有的运算符号都可以重载
B. 基类类型的指针可以指向子类,子类类型的指针也可以指向基类
C. 可以在类的构造函数中对静态数据成员进行初始化
D. 动态联编要满足两个条件,被调用的成员函数是虚函数,用指针或引用调用虚函数

5、类的私有成员可在何处访问(    )

A. 友元类的私有成员函数中
B. 本类的成员函数
C. 友元函数
D. 子类的私有函数

答案:
单选题:
A(D) BBAC
BDADD
ABBCC
BCDBC
多选题:
AD
ABD
ABC
ABC

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C++课后习题答案 一、 选择填空 1. 下列各种高级语言,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2. 下列各种高级语言,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ 3. 下述面向对象抽象的原理,( )是不对的。 A. 数据抽象; B. 行为共享; C.进化; D. 兼容; 4. ( )不是面向对象系统所包含的要数。 A. 重载; B. 对象; C. 类; D. 继承; 5. 关于C++与C语言的关系的描述,( )是错误的。 A. C语言是C++的一个子集; B. C语言与C++是兼容的; C. C++对C语言进行了一些改进; D. C++和C语言都是面向对象的; 6. 下面关于对象概念的描述,( )是错误的。 A.对象就是C语言的结构变量; B.对象代表着正在创建的系统的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D.对象之间的信息传递是通过消息进行的; 7. 下面关于类概念的描述,( )是错误的。 A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类就是C语言的结构类型; 8. C++对C语言作了很多改进,下列描述( )使得C语言发生了质变,即从面向过程变成为面向对象。 A.增加了一些新的运算符; B.允许函数重载,并允许设置缺省参数; C.规定函数说明必须用原型; D.引进了类和对象的概念; 9. 按照标识符的要求,( )符号不能组成标识符。 A.连接符; B. 下划线; C.大小写字母; D.数字字符; 10. 下列符号,( )不可作为分隔符。 A.,; B.:;C.?; D.;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔动山霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值