C++小结 面试题 多态 封装 继承 虚函数 纯虚函数

C++的四个基本特征、什么是多态

抽象、封装、继承、多态。
多态:发出一个指令,系统会根据实际情况执行相应操作,这种特性就叫多态(同一个命令有多种形态)。

解释一下C++中多态是什么

多态:
发出一个指令,系统会根据实际情况执行相应操作,这种特性叫做多态(同一个命令有多种形态)。
编译时多态:具体调用哪个版本的函数是编译器在编译时就能确定。
运行时多态:用虚函数机制实现的,在运行期间动态绑定。

C++的封装继承多态

封装:
把抽象的结构封装成一个类(结构),并给类的成员函数、成员变量设置相应的访问权限。
继承:
1、在封装类先考虑现在有的类是否能解决一部分问题,如果有则把现在的继承过去,
在此基础上进行扩展,来缩短解决问题的时间。
2、把一个复杂的问题拆分成若干个小问题,每个问题设计一个类去解决,
最后把这些类通过继承合并成一个能解决复杂问题的类。
多态:
发出一个指令,系统会根据实际情况执行相应操作,这种特性就叫多态(同一个命令有多种执行形态)。
编译时多态:具体调用哪个版本的函数是编译器在编译时就能确定。
运行时多态:用虚函数机制实现的,在运行期间动态绑定。

纯虚函数和虚函数的区别

虚函数:当成员函数前加virtual关键字后,这样的函数被称为虚函数。
纯虚函数:将虚函数赋值为0,只声明不实现。
区别:
1、	虚函数是实现了的,纯虚函数只声明不实现。
2、	虚函数在子类中可以不重写(只有虚方法和抽象方法才能够被重写),纯虚函数必须在子类中实现。
3、	虚函数的类用于“实作继承”,也就是说继承接口的同时也继承了父类的实现;
子类也可以进行覆写,从而完成自己关于此函数的实现。纯虚函数的类用于“介面继承”,
即纯虚函数关注的是接口的统一性,实现由子类去完成。
4、	带纯虚函数的类叫做虚基类,这种类不能直接生成对象,
而只有被继承,并重写其虚函数后,才能使用。这样的类也叫抽象类。

构造函数为什么不能用虚函数,为什么析构函数要声明为虚函数(为什么C++中禁止有虚构造,却有虚析构)

假如构造函数定义为虚函数,子类的构造函数就会自动覆盖父类的构造;
当创建子类对象时,子类构造执行前会先调用父类构造,而父类对象已经被覆盖,
此时会调用覆盖版本(子类构造),就会形成死循环,因此编译器把禁止构造函数定义为虚函数。

当使用类多态时,通过父类指针或引用释放子类对象时,默认情况不会调用子类析构。
只有把父类的析构函数定义为虚函数(子类析构会自动覆盖它),
当通过父类指针或引用释放子类对象时,会先调用子类的析构(多态),
子类析构执行完成后会自动调用父类析构(继承的规则)。

在C++中,全局变量和局部变量可不可以重名

可以重名。
当出现重名时,在局部变量作用域中,全局变量失效。
(如果想在块内使用全局变量需要通过作用域解析运算符::引用。)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值