北京C++培训
美国上市C++培训机构

010-62126400

热门课程

北京C++培训 > 雇主企业 > 企业面试题 >C++面试常见问题整理汇总(三)

C++面试常见问题整理汇总(三)

  • 时间:2018-08-29 11:35
  • 发布:北京C++培训
  • 来源:企业面试题

下面主要介绍C++常见面试问题—三,北京达内C语言培训分享:

7. 简述多态的实现原理

编译器发现一个类中有虚函数,便会立即为此类生成虚函数表vtable。虚函数表的各表项为指向对应虚函数的指针。编译器还会在此类中隐含插入一个指针 vptr指向虚函数表。调用此类的构造函数时,在类的构造函数中,编译器会隐含执行 vptr 与 vtable 的关联代码,将 vptr 指向对应的 vtable,将类与此类的 vtable 联系了起来。另外在调用类的构造函数时,指向基础类的指针此时已经变成指向具体的类的 this 指针,这样依靠此 this 指针即可得到正确的 vtable。

如此才能真正与函数体进行连接,这就是动态联编,实现多态的基本原理。

注意:一定要区分虚函数,纯虚函数、虚拟继承的关系和区别。牢记虚函数实现原理,因为多态C++面试的重要考点之一,而虚函数是实现多态的基础。

8. c++空类的成员函数

缺省的构造函数

缺省的拷贝构造函数

缺省的赋值运算符

缺省的析构函数

缺省的取址运算符

缺省的取址运算符const

注意:只有当实际使用这些函数的时候,编译器才会去定义它们。

9. 谈谈你对拷贝构造函数和赋值运算符的认识

两个不同之处:

① 拷贝构造函数生成新的类对象,而赋值运算符不能。

② 由于拷贝构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检验源对象是否和新建对象相同。而赋值运算符则需要这个操作,另外赋值运算中如果原来的对象中有内存分配要先把内存释放掉。

注意:当有类中有指针类型的成员变量时,一定要重写拷贝构造函数和赋值运算符,不要使用默认的。

今天分享到此为止,你掌握了多少,后续分享更精彩,请继续北京达内C语言培训。

上一篇:C++面试常见问题整理汇总(二)
下一篇:C++面试常见问题整理汇总(四)

C++面试常见问题整理汇总(二)

C++面试常见问题整理汇总(一)

选择城市和中心
贵州省

广西省

海南省