C++的四个基本特征、什么是多态
抽象、封装、继承、多态。
多态:发出一个指令,系统会根据实际情况执行相应操作,这种特性就叫多态(同一个命令有多种形态)。
解释一下C++中多态是什么
多态:
发出一个指令,系统会根据实际情况执行相应操作,这种特性叫做多态(同一个命令有多种形态)。
编译时多态:具体调用哪个版本的函数是编译器在编译时就能确定。
运行时多态:用虚函数机制实现的,在运行期间动态绑定。
C++的封装继承多态
封装:
把抽象的结构封装成一个类(结构),并给类的成员函数、成员变量设置相应的访问权限。
继承:
1、在封装类先考虑现在有的类是否能解决一部分问题,如果有则把现在的继承过去,
在此基础上进行扩展,来缩短解决问题的时间。
2、把一个复杂的问题拆分成若干个小问题,每个问题设计一个类去解决,
最后把这些类通过继承合并成一个能解决复杂问题的类。
多态:
发出一个指令,系统会根据实际情况执行相应操作,这种特性就叫多态(同一个命令有多种执行形态)。
编译时多态:具体调用哪个版本的函数是编译器在编译时就能确定。
运行时多态:用虚函数机制实现的,在运行期间动态绑定。
纯虚函数和虚函数的区别
虚函数:当成员函数前加virtual关键字后,这样的函数被称为虚函数。
纯虚函数:将虚函数赋值为0,只声明不实现。
区别:
1、 虚函数是实现了的,纯虚函数只声明不实现。
2、 虚函数在子类中可以不重写(只有虚方法和抽象方法才能够被重写),纯虚函数必须在子类中实现。
3、 虚函数的类用于“实作继承”,也就是说继承接口的同时也继承了父类的实现;
子类也可以进行覆写,从而完成自己关于此函数的实现。纯虚函数的类用于“介面继承”,
即纯虚函数关注的是接口的统一性,实现由子类去完成。
4、 带纯虚函数的类叫做虚基类,这种类不能直接生成对象,
而只有被继承,并重写其虚函数后,才能使用。这样的类也叫抽象类。
构造函数为什么不能用虚函数,为什么析构函数要声明为虚函数(为什么C++中禁止有虚构造,却有虚析构)
假如构造函数定义为虚函数,子类的构造函数就会自动覆盖父类的构造;
当创建子类对象时,子类构造执行前会先调用父类构造,而父类对象已经被覆盖,
此时会调用覆盖版本(子类构造),就会形成死循环,因此编译器把禁止构造函数定义为虚函数。
当使用类多态时,通过父类指针或引用释放子类对象时,默认情况不会调用子类析构。
只有把父类的析构函数定义为虚函数(子类析构会自动覆盖它),
当通过父类指针或引用释放子类对象时,会先调用子类的析构(多态),
子类析构执行完成后会自动调用父类析构(继承的规则)。
在C++中,全局变量和局部变量可不可以重名
可以重名。
当出现重名时,在局部变量作用域中,全局变量失效。
(如果想在块内使用全局变量需要通过作用域解析运算符::引用。)