• c++期末复习题


    第二章:

    第一节:

    5、下列关于数据成员的描述中,错误的是_____

    A、数据成员的的类型只能是基本数据类型

    B、数据成员用于保存数据

    C、类中的数据成员之间不能重名

    D、类的数据成员也被称作属性

    7、对于类中定义的成员,其隐含访问权限为_____

    A、protected

    B、public

    C、static

    D、private

    10、____是不可以作为该类的数据成员的。

    A、另一个类的对象

    B、自身类对象的引用

    C、自身类的对象

    D、自身类对象的指针

    第二节:

    5、类和对象实现面向对象程序设计的▁▁▁▁▁和▁▁▁▁▁特性。

    答案:ADC 封装和抽象

    第三章:

    第一节:

    5、已定义类ABC_____。

    1. class ABC {
    2. private:
    3. int x, y;
    4. public:
    5. ABC(int a, int b) {
    6. x = a;
    7. y = b;
    8. }
    9. };

    则下列定义对象语句中,错误的是_____。

    A、ABC obj;

    B、ABC obj(5, 10);

    C、ABC *pobj = new ABC(5, 10);

    D、ABC obj(5, 5+5);

    第二节:

    3、一个类可包含析构函数的个数是_____。

    A、至少一个

    B、0个或多个

    C、1个

    D、多个

    7、关于new运算符的下列描述中,_____是错误的

    A、使用它创建对象时要调用构造函数

    B、使用它创建的对象或对象数组必须使用运算符delete删除

    C、使用它创建对象数组时必须指定初始值

    D、它可以用来动态创建对象和对象数组

    第三节:

    5、请根据要求把程序补充完整

    1. #include
    2. using namespace std;
    3. class A {
    4. int a,b;
    5. public:
    6. A(int x=0,int y=0) {
    7. a=x;
    8. b=y;
    9. }
    10. A( ▁▁▁▁▁ ) {// 完成拷贝功能的构造函数
    11. a=t.a; // 第一个成员等于参数的第一个成员
    12. b=t.a+t.b▁▁▁▁▁; // 第二个成员等于参数的两个成员之和
    13. }
    14. void Set(int,int);
    15. void Print( );
    16. };
    17. void A::Set(intx,inty) {
    18. a=x;
    19. b=y;
    20. }
    21. void A::Print( ) {
    22. cout<
    23. }

    第四节:

    1、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是▁▁▁▁▁。 Sample a[2], *q, *p = new Sample;

    答案:ACC constA&t b=t.a+t.b  3次

    第四、五章:

    第一节:

    4、下列关于静态成员的描述中,错误的是‍_____。

    A、静态数据成员不属于某个对象,是类的共享成员

    B、私有静态成员具有块作用域

    C、静态数据成员要在类外定义和初始化

    D、公有静态成员具有文件作用域

    5、在类中声明一个常函数成员fun,下列_____语句是正确的

    A、void fun( ) const;

    B、void fun( );

    C、const void fun( );

    D、void const fun( );

    6、下列静态数据成员的特性中,_____是错误的

    A、静态数据成员在类体外进行初始化

    B、静态数据成员初始化时,要在静态数据成员名前加类名和作用域运算符

    C、静态数据成员不是所有对象所共享的成员

    D、说明静态数据成员时前边要加关键字static来修饰

    8、下面有关静态成员函数的描述中,正确的是_____。

    A、在建立对象前,就可以为静态数据成员赋值

    B、静态成员函数在类外定义是,要用static前缀

    C、静态成员函数只能在类外定义

    D、在静态成员函数中可以使用this指针

    第二节:

    1、下面有关友元函数的描述中,正确的说法是_____。

    A、在类的外部定义友元函数时必须加上friend关键字

    B、一个友元函数不可以同时定义为两个类的友元函数

    C、友元函数是独立于当前类的外部函数

    D、友元是本类的成员函数

    5、如果在主函数main()中有函数调用Point::func();则函数func()是类Point的_____。

    A、私有静态成员函数

    B、公有静态成员函数

    C、公有非静态成员函数

    D、友元函数

    第三节:

    9、通过运算符重载,可以定义新的运算符。

    第四节:

    4、下列程序的运行结果为▁▁▁▁▁

    1. #include
    2. #include
    3. using namespace std;
    4. class Toy {
    5. char name[10];
    6. static int count;
    7. public:
    8. Toy(char* _n) {
    9. strcpy(name, _n);
    10. count++;
    11. }
    12. ~Toy( ) {
    13. count--;
    14. }
    15. char* GetName( ) {
    16. return name;
    17. }
    18. static int getCount( ) {
    19. return count;
    20. }
    21. };
    22. int Toy::count=0;
    23. int main( ) {
    24. Toy t1("Snoopy"), t2("Mickey"), t3("Barbie");
    25. cout<
    26. return 0;
    27. }

    5、下列程序的运行结果为▁▁▁▁▁,12行对公有静态数据成员的调用obj.a,可改写为▁▁▁▁▁

    1. #include
    2. using namespace std;
    3. class A{
    4. public:
    5. static int a;
    6. void init(){a=1;}
    7. A(int a=2){init();a++;}
    8. };
    9. int A::a=0;
    10. A obj;
    11. int main(){
    12. cout<
    13. return 0;
    14. }

    第五节:

    答案:BACACB 3 1 A::a

    第六章:

    第一节:

    2、下列关于派生类的叙述中,错误的是_____。

    A、基类成员被派生类继承以后访问权限保持不变

    B、派生类至少要有一个基类

    C、派生类中包括了从基类继承的成员

    D、一个派生类可以作为另一个派生类的基类

    3、下列关于派生类和基类的描述中,正确的是_____。

    A、派生类对基类的默认继承方式是公有继承

    B、派生类成员函数可以访问基类的所有成员

    C、派生类成员函数只能访问基类的公有和保护成员

    D、派生类成员函数只能访问基类的公有成员

    4、下列关于虚基类的描述中,错误的是___b__。

    A、使用虚基类可以消除由多继承产生的二义性

    B、声明“class B : virtual public A”说明类B为虚基类

    C、建立派生类对象时,首先调用虚基类的构造函数

    D、构造派生类对象时,虚基类的构造函数只被调用一次

    8、在面向对象程序设计中,实现信息隐蔽是靠_____。

    A、对象的继承

    B、对象的间接访问

    C、对象的分类

    D、对象的封装

    答案:ACAD

    第二节:

    2、请按下面注释的提示,在横线处填入适当的内容将类B的构造函数定义补充完整。

    1. class A {
    2. int a;
    3. public:
    4. A(int aa=0) {
    5. a=aa;
    6. }
    7. };
    8. class B: public A {
    9. int b;
    10. A c;
    11. public:
    12. //用aa初始化基类A,用aa+1初始化类对象成员c?
    13. B(int aa):▁▁▁▁▁ { b=aa+2; }
    14. };

    3、下列程序的输出结果是▁▁▁▁▁

    1. #include
    2. using namespace std;
    3. class Base {
    4. public:
    5. void print ( ) {
    6. cout << "Base";
    7. }
    8. };
    9. class Derived : public Base {
    10. public:
    11. void print ( ) {
    12. cout << "Deri";
    13. }
    14. };
    15. int main( ) {
    16. Derived * pd = new Derived( );
    17. Base * pb = pd;
    18. pb->print( );
    19. pd->print( );
    20. delete pd;
    21. return 0;
    22. }

    4、有如下类声明,则类MyDERIVED中受保护的成员的个数是▁▁▁▁▁。

    1. class MyBASE {
    2. private:
    3. int k;
    4. protected:
    5. int x;
    6. public:
    7. void set(int m,int n) {
    8. k=m;
    9. x=n;
    10. }
    11. int get( )const {
    12. return k;
    13. }
    14. };
    15. class MyDERIVED: protected MyBASE {
    16. protected:
    17. int j;
    18. public:
    19. void set(int m, int n,int p) {
    20. MyBASE::set(m,n);
    21. j=p;
    22. }
    23. int get( ) const {
    24. return MyBASE::get( )+j;
    25. }
    26. };

    7、下列程序的输出结果是▁▁▁▁▁

    1. #include
    2. using namespace std;
    3. class A {
    4. protected:
    5. int n;
    6. public:
    7. A(int x=5) {
    8. n=++x;
    9. }
    10. void show() {
    11. cout<<"A::" <
    12. }
    13. };
    14. class B:public A {
    15. protected:
    16. int n;
    17. public:
    18. B(int x=3) {
    19. n=x*x;
    20. }
    21. void show() {
    22. cout<<"B::" <
    23. }
    24. };
    25. int main() {
    26. B b;
    27. A *p=&b;
    28. p->show();
    29. return 0;
    30. }

     答案:A(aa),C(aa+1)   BaseDeri  4  A::6

    第三节:

    1、假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,构造函数和析构函数的执行次序分别为_____。

    A、X, Y, Y, X

    B、X, Y, X, Y

    C、Y, X, X, Y

    D、Y, X, Y, X

    2、多重继承的构造顺序可分为如下四步,这四个步骤的正确顺序是_____。 (1)所有非虚基类的构造函数按照他们被继承的顺序构造 (2)所有虚基类的构造函数按照他们被继承的顺序构造 (3)所有子对象的构造函数按照他们被继承的顺序构造 (4)派生类自己的构造函数体

    A、(2)(4)(3)(1)

    B、(4)(3)(2)(1)

    C、(2)(1)(3)(4)

    D、(3)(4)(1)(2)

    5、对于下面的类:

    1. class X {
    2. int a;
    3. public:
    4. X(int x=0) {
    5. a=x;
    6. }
    7. };
    8. class Y: public X {
    9. int b;
    10. public:
    11. Y(int x=0,int y=0): X(y) {
    12. b=x;
    13. }
    14. };

    下列语句组中出现语法错误的是____。

    A、X *pa=new Y(1,2);

    B、Y b1(2,3); X &pa1=b1;

    C、Y b1(2,3); X *pa1=&b1;

    D、X a2(10); Y b2=a2;

    6、以下有关继承的叙述不正确的是____。

    A、继承可以实现软件复用

    B、虚基类可以解决多继承产生的二义性问题

    C、派生类不继承基类的私有成员

    D、派生类的构造函数要调用基类的构造函数

     答案:ACDC

    第四节:

    第七章:

    第一节:

    1、下列哪种C++语法形式不属于多态__d___。

    A、对象多态

    B、重载运算符

    C、重载函数

    D、不同函数中定义的同名局部变量

    5、关于基类中的虚函数与一般成员函数,正确的是_____。

    A、虚函数只能定义一个,而一般成员函数可以多个

    B、虚函数与一般成员函数在基类中没什么区别

    C、虚函数不能定义函数体,而一般成员函数可以

    D、虚函数不能被调用,而一般成员函数可以

    7、对虚函数的调用_____。

    A、一定使用动态联编

    B、必须使用动态联编

    C、一定使用静态联编

    D、不一定使用动态联编

    8、对虚函数使用基类指针或引用,系统使用_____,对虚函数使用对象名调用时,系统使用_____联编。

    A、静态联编、静态联编

    B、动态联编、动态联编

    C、静态联编、动态联编

    D、动态联编、静态联编

    第三节:

    2、对于如下类定义,以下正确的叙述是_____。

    1. class A{
    2. public:
    3. virtual void funcl(){}
    4. void func2(){}
    5. };
    6. class B:public A{
    7. public:
    8. void func1(){cout<<”class Bfunc1”<
    9. virtual void func2(){cout<<”class B func2”<
    10. };

    A、B::func1()是虚函数,A::func2()不是虚函数

    B、A::func2()和B::func1()都不是虚函数

    C、B::func1()不是虚函数,A::func2()是虚函数

    D、A::func2()和B::func1()都是虚函数

    8、根据以下要求,填写程序代码使程序能够运行(注:所有标点符号均为英文状态,且符号间无空格) (1)▁▁▁▁▁ 填写完程序后,执行该程序的运行结果为▁▁▁▁▁

    1. #include
    2. using namespace std;
    3. class Point {
    4. double x,y;
    5. public:
    6. Point(double X,double Y) {
    7. x=X;y=Y;
    8. }
    9. double Area()const{
    10. return 0.0;
    11. }
    12. };
    13. class Rectangle:public Point {
    14. double w,h;
    15. public:
    16. Rectangle(double X,double Y,double W,double H);//类内声明
    17. double Area()const{
    18. return w*h;
    19. }
    20. };
    21. //类外定义Rectangle类的构造函数
    22. //使用参数初始化列表,实现形参X和Y初始化基类数据成员,W和H初始化派生类新增数据成员
    23. __(1)___{ }
    24. void fun(Point &s){
    25. cout<<"Area="<
    26. }
    27. int main( ) {
    28. Rectangle rec(3.0,5.0,15.0,25.0);
    29. fun(rec);// A
    30. return 0;
    31. }

    9、若将第8题中,fun函数头部改为fun(Point *p),则其函数体内的语句因改写为▁▁▁▁▁ 此时,主函数中对fun函数的调用的语句因改写为▁▁▁▁▁

    答案:BBDDD

    8、Rectangle::Rectangle(double X, double Y, double W, double H) : Point(X, Y), w(W), h(H) Area=0 9、cout<<"Area="<Area(); fun(&rec);

  • 相关阅读:
    代码随想录算法训练营第二十四天丨 回溯算法part02
    webrtc Native C++ 客户端的内存释放问题
    一文带你学会Linux vi/vim
    android studio新版本gradle Tasks找不到assemble
    一波三折的react + less
    C语言—程序环境和预处理
    巧用 CSS 变量,实现动画函数复用,制作高级感拉满的网格动画
    新浪微博一键删除所有内容
    每天五分钟机器学习:常用的聚类算法——k均值的运行原理和实现
    VS2017+QT+PCL环境配置
  • 原文地址:https://blog.csdn.net/2301_80142503/article/details/139731141