C++的一些面试题

1.C++的三大特性

封装:使代码模块化。把属性和方法放到同一个类中,把方法的实现封装到类的成员函数的实现中,隐藏对象的属性和实现细节,仅仅对外提供接口和方法。

继承:减少代码的重复,提供程序的可阅读性,方便功能的添加。新的类与已有类有相同的属性和方法,可以通过继承得到已有的属性和方法。

多态:提高了代码的可复用性,同一种操作作用于不同的对象,产生不同的行为。

2.多态怎么实现的?

多态的条件:有继承关系,基类的多态函数必须声明为虚函数,派生类必须重写基类的函数,通过基类指针或引用调用虚函数。

3.深拷贝和浅拷贝?

浅拷贝:默认生成的拷贝构造函数就是浅拷贝,只拷贝类的成员对应的存储空间,不会拷贝类中成员再开辟的存储空间

深拷贝:拷贝成员函数的同时,连同成员对应的存储空间一同拷贝

4.重载、覆盖、隐藏

重载:同一个类,函数名一致,参数列表不同,返回值不做要求,可以有virtual关键字

覆盖(重写):基类和派生类中的两个成员函数,函数名相同,参数相同,基类必须有virtual关键字

隐藏:在继承关系中,将基类的同名函数的实现重新修改了。两种情况,一种函数名字相同,参数列表相同,函数的实现不同,基类没有virtual关键字。一种函数名字相同,参数列表不同,基类中virtual不做要求。

5.C++中static的作用

静态局部变量:生存周期到程序结束,只初始化一次,再次调用会保持上次离开的值。

静态全局变量:作用域只在本文件中

静态成员变量:不属于对象的属性,整个类的属性,多个变量共用同一个成员,类的内部是声明,要在类的外部初始化,通常像计数等统计类的成员使用

静态成员函数:不属于任何对象,可以直接通过类名调用,没有this指针,只能访问静态成员变量

6.C++中虚函数的作用

C++中虚函数的作用主要是实现多态,在基类中声明一个虚函数,在派生类中对其重写。基类的引用或者指针指向一个派生类对象,当基类变量调用该函数时候,会自动调用派生类的对象

7.malloc和new的区别

属性的区别:malloc是c语言库函数,new是c++的运算符。使用malloc,需要包含相应的头文件,使用new不需要任何前置操作,只需要编译器支持即可。

使用上的区别:malloc申请空间需要显式填入申请内存的大小;new无需显示填入申请的内存大小,会根据new的类型分配内存。

内存位置的区别:malloc申请的内存是在堆空间;new分配的内存空间是在自由存储区。

返回类型的区别:malloc内存分配成功返回void*,需要通过强制类型转换转换为需要的类型;new返回对象类型的指针。

8.指针和引用的区别

指针是一个变量,这个变量存储的是一个地址,指向内存的一个存储单元,指针是一个实体;引用跟原来的变量实质上是同一个东西,是原变量的一个别名。

指针的值可以为空,引用的值不能为NULL,引用在定义的时候必须初始化

指针的值初始化后可以改变,指向其它的存储单元;引用在初始化后就不会改变了,从一而终。

指针可以有多级,引用只能是一级。

sizeof引用得到的是所指向的变量大小,sizeof指针得到的是指针本身的大小

9.const修饰成员变量函数会怎样?

类的成员变量不能被修改

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值