C++面试题(一)——基础概念篇
2014-02-03 13:06
239 查看
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关键字可以实现虚继承。
唐璐
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关键字可以实现虚继承。
相关文章推荐
- C++基础面试题总结
- C++基础7【难】 多态:实现原理 vptr指针 证明vptr存在 类的步长 纯虚函数:抽象类 案例 【面试题】
- c++基础面试题总结
- C++基础面试题
- C++面试题(一)——基础概念篇
- C++基础面试题
- C/C++基础面试题整理
- 面试题:C++基础
- 面试题--C++基础篇(补充)
- 常见C/C++语言基础面试题集合
- 程序基础程序员必知:C/C++面试题
- C++基础面试题
- C++基础面试题
- C++ — 多态基础面试题集锦
- C++基础面试题
- [分类整理I]微软等100题系列V0.1版:c/c++基础面试题集锦
- 【c++】c++一些基础面试题
- 微软等100题系列V1.0版整理I:c/c++基础面试题集锦
- C++面试题(一)——基础概念篇
- C/C++经典面试题(基础语法)