C++面试题(一)——基础概念篇

转载 2015年11月17日 22:30:48

C++面试题——基础概念篇

唐璐

http://blog.csdn.net/worldwindjp/

        面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数和构造函数。接着拷贝构造函数、操作符重载、下面是STL,最后是智能指针。
       都能挺过去那基本知识这关应该算是过了,下面就是项目背景和算法了。

     1,C++和C相比最大的特点
                   1)面向对象:封装,继承,多态。
                   2)引入引用代替指针。
                   3)const /inline/template替代宏常量。
                   4)namespace解决重名的问题。
                   5)STL提供高效的数据结构和算法
     
     2,你知道虚函数吗
     答案:实现多态所必须,父类类型的指针指向子类的实例,执行的时候会执行之类中定义的函数。
     
     3,析构函数可以是虚函数吗?
     答案: 如果有子类的话,析构函数必须是虚函数。否则析构子类类型的指针时,析构函数有可能不会被调用到。

     4,多态的实现。
     答案:简而言之编译器根据虚函数表找到恰当的虚函数。对于一个父类的对象指针类型变量,如果给他赋父类对象的指针,那么他就调用父类中的函数,如果给他赋子类对象的指针,他就调用子类中的函数。函数执行之前查表。

     5,虚函数表是针对类还是针对对象的?
     答案:虚函数表是针对类的,一个类的所有对象的虚函数表都一样。
     
     6,纯虚函数和虚函数有什么区别
     
答案:纯虚函数就是定义了一个虚函数但并没有实现,原型后面加"=0"。包含纯虚函数的类都是抽象类,不能生成实例。

     7,构造函数可以是虚函数吗?
     答案:每个对象的虚函数表指针是在构造函数中初始化的,因为构造函数没执行完,所以虚函数表指针还没初始化好,构造函数的虚函数不起作用。

     8,构造函数中可以调用虚函数吗?
     
答案:就算调用虚函数也不起作用,调用虚函数同调用一般的成员函数一样。

     9,析构函数中可以调用虚函数吗?
     
答案:析构函数中调用虚函数也不起作用,调用虚函数同调用一般的成员函数一样。析构函数的顺序是先派生类后基类,有可能内容已经被析构没了,所以虚函数不起作用。

     10,虚继承和虚基类
     
答案:虚继承是为了解决多重继承出现菱形继承时出现的问题。例如:类B、C分别继承了类A。类D多重继承类B和C的时候,类A中的数据就会在类D中存在多份。通过声明继承关系的时候加上virtual关键字可以实现虚继承。



FROM:  http://blog.csdn.net/worldwindjp/article/details/18909079

相关文章推荐

C++面试题(一)——基础概念篇

C++面试题——基础概念篇 普通C++面试时候的一般都是这个套路:      1,C++和C相比最大的特点                    1)面向对象:封装,继承,多态。           ...

090830 Java面试题——基础篇60题

  • 2009年08月30日 17:17
  • 377KB
  • 下载

面试题--C++基础篇

C++中list和vector的区别 (1)vector是顺序表,表示的是一块连续的内存,元素被顺序存储;list是双向连接表,在内存中不一定连续。 (2)当数值内存不够时,vector会重新申请一块...
  • tang319
  • tang319
  • 2016年09月28日 10:23
  • 490

面试题--C++基础篇(补充)

const用法 1)定义一个常量,可以很方便地进行参数的调整和修改。const对象一旦创建后其值不能被修改,所以const对象必须初始化。 2)const变量相对于宏定义更安全。编译器可以对const...
  • tang319
  • tang319
  • 2016年09月29日 17:15
  • 123

基于单链表经常见的面试题——基础篇

点击进入查看如何实现链表以及链表的一些基本操作函数 基于单链表的面试题——进阶篇1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用?首先我们时间上来进行分析:(1)对于顺序表。不论是静态的还...

003java面试笔记——【java基础篇】从团八百失败面试总结的java面试题(未完待续)

8、java 线程     1)线程概念,线程与进程      线程:线程是“进程”中某个单一顺序的控制流。也被称为轻量进程。线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线...

linux面试题[答案自己修订了下](网络,文件系统,OS,基础概念)

自己读了一遍,把里面个别自己觉得错误的地方用[XXXXX]的形式标出,如果觉得不对的地方还请指出!有些题目涉及文件路径的可能不同的版本路径不同,而且文件名也有可能不同。 Linux基础(文件,磁盘...

c++笔试题——面试题

  • 2013年11月25日 21:11
  • 272KB
  • 下载

C++ — 多态基础面试题集锦

多态面试题集锦 什么是多态 答:多态是面向对象的重要特性之一,它是一种行为的封装,是同一种事物所表现出的多种形态,简单地说是”一个接口多种实现“ 多态的作用 答:多态技术允许将父类设置成...
  • Dawn_sf
  • Dawn_sf
  • 2017年04月03日 08:56
  • 887

c++基础面试题总结

如果内容有误,请留言提出,谢谢 1.面向过程与面向对象的本质区别思考面向过程就像是一个细心的管家,事无具细的都要考虑到。而面向对象就像是个家用电器,你只需要知道他的功能,不需要知道它的工作原理。(封...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++面试题(一)——基础概念篇
举报原因:
原因补充:

(最多只允许输入30个字)