C++面试题

1. 什么是虚函数?

在C++语言中,基类必须将它的两种成员函数区分开来:一种是基类希望其派生类进行覆盖的函数;另一种是基类希望派生类直接继承不要改变的函数。对于前者,基类通常定义将其定义为虚函数。
基类在其成员函数的声明语句之前加上关键字virtual,该函数就成了虚函数,可以执行动态绑定。
构造函数不可以是虚函数,静态函数也不可以是虚函数。
虚函数会继承,基类中的虚函数,在其派生类隐式地也是虚函数。

2. 纯虚函数

2.1 什么是纯虚函数?

首先呢,要清楚一点的就是纯虚函数一般情况下只有申明,没有定义。因为纯虚函数出现的意义就是为了告诉那些码农们,这个函数是没有实际意义的。虚函数的定义其实很简单,只需要在定义该函数的声明语句的分号之前加***“=0”***就可以将一个虚函数说明为虚函数,这块儿需要注意了,你得先是虚函数,才能是纯虚函数。

2.2 纯虚函数的一些特性

2.1 首先 =0 只能出现在类内部的虚函数声明语句处。
2.2 需要注意的是,我们也可以为纯虚函数提供定义,不过定义的函数体必须放在类的外部。因为我们不能在类的内部为一个=0的函数提供函数体。

2.3 纯虚函数的意义

我们在实际的项目中会碰上这样一种需求,基类中声明并且定义了一个虚函数,基类的第一层派生了继承了这个虚函数,而此时的这个类并不做具体的是实现,而是它的派生类去作具体的实现。太绕了,举个例子说明:
比如说超市的销售。定义一个基类Base,收费的函数实现就是单价乘以个数。但是单超市想搞促销活动的话,就得继续实现了。首先促销都活动有俩种:一种是库存小于某个值时,恢复原价,另一种是根据顾客得购买量来打折。这样得话就需要实现一个类,它得主要作用就是增加库存值和购买超过量这俩个值。然后再派生俩各类来具体实现这俩种打折方案。其中这个类,是肯定不希望去乱初始化得,因为没有意义。

3. 抽象基类

1.什么是抽象基类?
含有纯虚函数的类就叫做抽象基类。
2.基类的一些注意事项
抽象基类是不能创建对象的。

4.C++的访问控制?

在这里我们首先需要分清楚,在C++中访问控制一共分为两种:
第一种是每个类中的各个成员的访问说明符:
公有成员(public):该类的对象(即用户)、派生类的成员、该类的友元、派生类的友元都可以访问。
受保护成员(protected):派生类的成员、该类的友元、派生类的友元(只能通过派生类对象)都可以访问。
私有成员(private):该类的成员可以访问、其友元可以访问。
第二种是派生类的派生列表中的访问说明符:
这里需要明确一点:派生列表中的访问说明符只控制派生类的对象(即用户)、派生类的派生类有关,与派生类的成员函数及友元的访问控制没有关系。
访问说明符为:private
派生类的派生类不能访问从基类中继承的所有类型的成员。
访问说明符为:protected
派生类的派生类可以访问从基类中的protected、public成员。
访问说明符为:public
派生类的派生类可以访问从基类中的protected、public成员。

5. 引用和指针的区别?

1.引用是别名,指针是对象.
2.引用定义的时候必须初始化,因为计算机必须在声明应用的的同时对它进行初始化时候必须初始化,所以才有了指针可以为空,引用不可以为空的书法。
3.其中将形参设为常量引用是C++中为了防止拷贝的一种优质手段.

6.static关键字的作用?

1.隐藏全局可见性。
2.将存在时间拓展为整个声明周期。
3.类的静态成员,说明这个成员是属于类的,而不是属于对象的,因此没有this指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值