C++期末判断题/选择题的易错知识点复习

1. 构造函数、析构函数能被继承或取地址(×)

2. 构造函数可以重载,但析构函数只有一个(√)

3. 返回值类型为引用类型的函数可以返回局部变量(×)

4. 静态成员函数没有this指针(√)

5. 静态成员函数可以直接访问非静态成员变量(×)

//由于静态成员函数没有this指针,所以不能直接访问非静态成员变量,必须通过向函数传递当前对象作为参数才可以访问当前对象的成员变量

6. const类型的变量声明时可以不用初始化(×)

7. const类型的对象只能访问const类型的成员函数,构造函数、析构函数除外(√)

8. const类型的对象如果作为实参,只能传递给const类型的形参(√)

9. volatile类型的对象只能访问volatile类型的成员函数,构造函数、析构函数除外(√)

10. 复合类调用构造函数时,成员对象的构造函数调用顺序取决于复合类的构造函数初始化列表(×)

//成员对象的构造函数调用顺序取决于其在复合类的声明顺序

11. 作为友元的类或类的函数,必须先声明后使用(√)

12. 友元关系可以继承(×)

//友元关系不继承、不传递、不对称

13. 重载函数允许只有返回值类型不同(×)

//重载函数可以在参数个数、参数类型、是否为const类型上有不同,但如果只有返回值类型不同,则调用函数时有歧义

14. 可以重载C++中不存在的运算符(×)

15. 运算符重载可以改变优先级(×)

16. 运算符重载不改变操作数个数(√)

17. 不能重载的运算符有 ?:    ::    .    #     ##     .*      ->*      *

18. 返回值为临时对象的重载运算符有 后缀++   后缀--     +    -    *   /    %

19. 返回值为引用类型的重载运算符有 前缀++   前缀--    =    []    ()    <<    >>

20. 必须以友元方式重载的运算符有   <<    >>

21. 必须以成员函数方式重载的运算符有   =    []    ()    ->

22. 派生类对象可用在基类对象使用的任何场合,如派生类对象可以赋值给基类对象、基类指针或基类引用,但此时这一基类的对象、指针或引用只能访问基类成员

23. 复合类或派生类的定义前需要包含成员对象所在类或基类的定义

24. 派生类构造函数的执行顺序:基类的构造函数(都为或都不为虚基类时按继承时声明的顺序)-> 内嵌成员对象的构造函数(按成员对象在类中声明的顺序)-> 自身类的构造函数

25. 派生类对象在调用其基类的构造函数时,若其有多个在同一层次上的基类,则虚基类的构造先于非虚基类的构造

26. 派生类和基类的虚函数原型可以不一致(×)

//如果仅是同名,则只是普通重载;如果仅是返回值类型不同,则程序会出错

27. 虚函数可以为static类型(×)

//静态函数、内联函数、构造函数不可以是虚函数

28. 在普通函数调用虚函数时,实际调用的是this指针指向的对象所在类的虚函数(√)

29. 在基类的构造函数或析构函数中调用虚函数,调用的是基类的虚函数(√)

30. 虚特性不可以继承(×)

31. 实现多态的两种方式:重载、虚函数

32. 纯虚函数是空函数(×)

33. 函数调用的匹配原则:

① 寻找完全匹配的函数

② 函数模板实例化后匹配

③ 重载函数参数隐式类型转化后匹配

④ 在上述某一步找到两个及以上匹配的函数或三步都找不到匹配的函数时,则程序出错

34. 析构函数不可以主动调用(×)

//主动调用析构函数后,程序最终还会再次调用析构函数

35. 友元函数的定义必须在类外(×)

//友元函数的定义可以在类内或类外

36. 静态成员函数的定义在类外时,需要加上static关键字(×)

37. 在类中定义的函数是内联函数(√)

//类中的内联函数实现有两种方式,一种是在类中进行定义;另一种是在类外进行定义,函数定义前加上incline关键字。注意第二种方式的函数定义需要放在头文件

38. 定义引用类型的变量时必须初始化(√)

39. 在调用派生类的拷贝构造函数时,其基类的构造函数不会被调用(×)

40.在异常处理机制中,throw的变量一定会被catch(×)

猜你喜欢

转载自blog.csdn.net/m0_63947712/article/details/128321829
今日推荐