C++面试问题集锦

来源:互联网 发布:java调用https接口 编辑:程序博客网 时间:2024/05/23 19:20

1.C++相对于C(面向对象相对于面向过程)有哪几个特点?

答:抽象,继承,封装,重载和多态。


2.C++空类默认产生哪些成员函数?

答:默认构造函数,析构函数,默认拷贝构造函数和赋值函数。


3.class和struct有什么区别?

答:分两种情况进行分析:

a)C的struct与C++的class的区别:struct作为一种复杂数据类型定义只能定义成员变量,不能定义成员函数,即不能用于面向对象编程;

b)C++中的struct和class的区别:对于成员访问权限以及继承方式,class中默认的是private,而struct中默认的是public;class还可用于表示模板类型,而struct则不行。


4.在C++类中,构造函数的初始化列表顺序与变量声明的顺序一致,而不是按照初始化列表中的顺序。


5.static关键字:

类中的静态成员是该类类型的全局变量,只有一个,由该类类型的所有对象共享访问,而且必须在类外面初始化;

类中的静态成员函数只能调用静态成员函数,它和静态成员变量一样,不属于类的对象,因此不含this指针,也就无法调用类中的非静态成员变量。


6.什么是函数重载?为什么C不支持函数重载,而C++能支持函数重载?

答:函数重载是用来描述同名函数具有相同或者相似功能,但数据类型或者是参数不同的函数管理操作。函数名经过C++编译器处理后包含了原函数名、函数参数数量及返回类型信息,而C不会对函数名进行处理。


7.C++类继承的三种关系:

(1)public继承:基类成员对派生类来说,基类的公有成员和保护成员都保持原有状态,都可见,而基类的私有成员仍然是私有的,不可见;对派生类对象来说,基类的公有成员可见,而其他成员不可见。故在公有继承时,派生类的成员函数可以访问基类中的公有成员和保护成员,派生类的对象可以访问基类中的公有成员。

(2)private继承:对派生类来说,基类的公有成员和保护成员都变成派生类的私有成员,是可见的,基类的私有成员不可见,派生类不可以访问基类中的私有成员;对派生类对象来说,基类的所有成员都不可见。

(3)protected继承:派生类来说基类的公有成员和保护成员都变成派生类的保护成员,是可见的,基类的私有成员不可见,派生类不可以访问基类中的私有成员;对派生类对象来说,基类的所有成员都不可见。


8.什么是多态?

答:多态,定义是同一操作作用于不同的对象,产生不同的执行结果。具体来说,就是允许你将父类对象设置成为和它的一个或者更多的子对象相等的技术,父对象可以根据当前赋值给它的子对象的特性以不同的方式运作。

多态性具体有两种类型:

(1)编译时的多态性:通过重载来实现,对于非虚成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定如何实现何种操作;

(2)运行时的多态性:是通过虚函数实现的,虚函数是允许被其子类重新定义的函数,这是指直到系统运行时,才根据实际情况决定实现何种操作。


封装:使得代码模块化; 继承:实现代码重用;多态:实现接口重用。


未完待续。。。