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

简介: C++面试题——基础概念篇http://blog.csdn.net/worldwindjp/面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数和构造函数。

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关键字可以实现虚继承。

目录
相关文章
|
9天前
|
存储 算法 编译器
C++面试题其一
C++文件编译与执行的四个阶段 预处理:处理#include、#define等预处理指令。 编译:将源码翻译为目标代码。 汇编:将目标代码转换为机器指令。 链接:将目标文件和库文件合并生成可执行文件。 STL中的vector的实现,是怎么扩容的? vector通过动态数组实现,当容量不足时,分配更大的内存(通常是原来的两倍),复制旧数据到新内存,并释放旧内存。
28 2
|
9天前
|
存储 程序员 编译器
C++面试题其二
extern "C" 用于告诉编译器按照C语言的链接方式处理代码,通常用于C++代码与C代码混合编程,以防止因名字修饰(name mangling)引起的链接错误。例如: extern "C" { void c_function(); } 通过这些问题的深入理解和解答,能够更好地掌握C++编程的核心概念和实际应用,为面试做好充分的准备。
24 1
|
5天前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
|
23天前
|
存储 算法 C语言
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
16 5
|
21天前
|
设计模式 开发框架 算法
C++中的设计模式:基本概念与应用
C++中的设计模式:基本概念与应用
26 2
|
23天前
|
Java C语言 C++
从C语言到C++_28(红黑树RedBlackTree)概念+插入接口实现(上)
从C语言到C++_28(红黑树RedBlackTree)概念+插入接口实现
26 4
|
23天前
|
C语言 容器
从C语言到C++_27(AVL树)概念+插入接口实现(四种旋转)(上)
从C语言到C++_27(AVL树)概念+插入接口实现(四种旋转)
25 4
|
23天前
|
C语言 C++
从C语言到C++_27(AVL树)概念+插入接口实现(四种旋转)(下)
从C语言到C++_27(AVL树)概念+插入接口实现(四种旋转)
24 2
|
24天前
|
存储 C语言 Python
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(下)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
41 3
|
24天前
|
C语言
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(中)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
17 1