D* pD =newD();//pD的静态类型是它声明的类型D*,动态类型也是D* B* pB = pD;//pB的静态类型是它声明的类型B*,动态类型是pB所指向的对象pD的类型D* C* pC =newC(); pB = pC;//pB的动态类型是可以更改的,现在它的动态类型是C* 3、静态绑定:绑定的是对象的静态类型,某特性(比如函数)依赖于对象...
静态绑定也就是将该对象相关的属性或函数绑定为它的静态类型,也就是它在声明的类型,在编译的时候就确定。在调用的时候编译器会寻找它声明的类型进行访问。 动态绑定就是将该对象相关的属性或函数绑定为它的动态类型,具体的属性或函数在运行期确定,通常通过虚函数实现动态绑定。 (33) 深拷贝和浅拷贝的区别(举例说明...
(32)消息摘要算法列举一下,介绍MD5算法,为什么MD5是不可逆的,有什么办法可以加强消息摘要算法的安全性让它不那么容易被破解呢?(百度安全一面) (33) 单条记录高并发访问的优化 (34) 介绍一下ping的过程,分别用到了哪些协议 (百度安全等) (35) TCP/IP的粘包与避免介绍一下 (36) 说一下TCP的封包和拆包 (37...
父类指针指向子类实例对象,调用普通重写方法时,会调用父类中的方法。而调用被子类重写的虚函数时,会调用子类中的方法。再次说明了,子类中被重写的虚函数的运行方式是动态绑定的,与当前指向类实例的父类指针类型无关,仅和类实例对象本身有关。程序运行状态改变 程序的运行状态、就绪状态以及阻塞状态之间的相互转化...
多态,即多种状态,在面向对象语言中,接口的多种不同的实现方式即为多态。 C++ 多态有两种:静态多态(早绑定)、动态多态(晚绑定)。静态多态是通过函数重载实现的;动态多态是通过虚函数实现的。 多态是以封装和继承为基础的。静态多态(早绑定)函数重载class A { public: void do(int a); void do(int a, int...
堆:动态申请的内存空间,就是由 malloc 分配的内存块,由程序员控制它的分配和释放,如果程序执行结束还没有释放,操作系统会自动回收。堆从低地址向高地址增长。一般可以分配几个G大小的内存。 在堆栈之间有一个 共享区(文件映射区)。 全局区/静态存储区(.BSS 段和 .data 段):存放全局变量和静态变量,程序运行结...
(1)启动动态链接器本身 动态链接器有其自身的特殊性:首先,动态链接器本身不可以依赖其他任何共享对象(人为控制);其次动态链接器本身所需要的全局和静态变量的重定位工作由它自身完成(自举代码)。 在Linux下,动态链接器ld.so实际上也是一个共享对象,操作系统同样通过映射的方式将它加载到进程的地址空间中。操作系统在...