首页 > 代码库 > c++面试问题的几个方向
c++面试问题的几个方向
1 关于多态,面向对象的几个要点
作为面向对象的程序员,这个问题是必须要弄清楚的,网上、教科书上都是标准答案,关键是理解内涵哦。
2 关于虚函数表和RTTI
这个Inside C++ Object Model讲的相当明确
虚函数表的第一项就是关于RTTI的,RTTI就是Run Time Type Identification。
后面就是虚函数指针项了。
3 C++对象的内存布局
在引入了虚函数、继承、多继承、虚拟继承后,再加上内存对齐,这个问题就不那么简单了。
4 构造函数、析构函数与虚函数
一系列问题,作为一个C++程序员,这个务必要搞清楚。
5 虚函数的缺省参数问题
代码估计更能描述清楚问题:
class A
{
public:
virtual void function(int type = 0) {...}
}
class B : public A
{
public:
virtual void function(int type = 2) {...} // 注意这里type缺省值被改成了2
}
这样改有什么问题呢?
我们知道virtual是动态绑定的,为了效率考虑,缺省参数这个问题是静态绑定的,这样一来上面的做法就会出现问题了。
如果能使用静态绑定和动态绑定来解释这个问题,那你就上了一个台阶了,我是从来没这样用过啊,不知道问题所在。有文章说没有吃过苦头的C++程序员不是好程序员,驯服不了C++这个怪物,此言非虚!?
6 关于运算符
重载的问题,运算符和函数
7 关于new与delete的形式
8 关于private继承
不知道多少人用过,用了又能有多少好处,而且有些语言已经禁止private继承了,纠缠这个有何意义呢。
9 关于STL的Iterator
STL有很多牛思想,不过我还没被问过,像Traits编程技法等等。面试常见的是,++前置与后置的效率问题。
10 关于C++的异常
C++有异常处理机制,虽然不够完善,但还是应该去仔细了解了解。
11 关于C++与C的效率问题
这个问题最不好讲,效率的比较,环境是什么,先决条件又是什么呢,从语言层面讲C++比起C语言来主要的效率损失来自于virtual导致的非直接调用,这个Inside C++ Object Model讲的相当明确了。
c++面试问题的几个方向