《剑指offer》第二章——关于面试官王海波的思考

一、C++基础知识
1.面向对象的特性:封装、继承和多态。

所谓封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。

所谓继承,是指可以让某个类型的对象获得另一个类型的对象的属性的方法。继承概念的实现方式有两类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。

所谓多态,就是向不同对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。

2.构造函数和析构函数

所谓构造函数,主要作用是用于初始化对象的数据成员。构造函数的名称必须与类名相同。如果没有定义任何构造函数,则C++会自动提供一个默认构造函数。

所谓析构函数,就是用来释放或返还生命周期即将结束的类对象所占据的资源。析构函数与构造函数是相对立或互补的,构造函数获取资源,析构函数释放资源。

3.静态绑定和动态绑定

静态类型,指的是对象(指针、引用)在声明时的类型。
动态类型,指的是当前对象(包括指针和引用)实际指向的类型。

静态绑定,绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。

动态绑定,绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期。

在C++的继承关系中,指针或引用的动态类型与静态类型可以不同,这是C++实现多态的关键。

借用两句话:
只有虚函数才使用的是动态绑定,其他的全部是静态绑定。
绝不重新定义继承而来的缺省参数。

C++之面向对象的三个基本特征
深入理解C++的动态绑定和静态绑定

猜你喜欢

转载自blog.csdn.net/qq_43502142/article/details/84310126
今日推荐