`

C++中的静态关联与动态关联

阅读更多

一、关联:去顶调用的具体对象的过程称为关联,就是把一个函数名与一个类对象捆绑在一起,建立一个关联。一般来说,关联指把一个标识符和一个存储地址联系起来。

二、认知:

 函数重载和通过对象名调用的虚函数,在编译时即可确定其调用的虚函数属于哪一个类,其过程称为静态关联,由于是在运行前进行关联的,所以又称为早期关联,函数重载属静态关联。

虚函数就是通过基类指针与虚函数的结合来实现多态性的。先定义一个指向基类的指针变量指向对应类的对象,再通过基类指针去调用虚函数。这样的调用方式编译系统在编译时是不能确定调用了哪一个类对象的虚函数的,因为编译只做静态语法检查,不能从语句形式上确定调用对象的。

 当在编译系统在运行阶段确定关联关系时,指针可以先后指向不同的类对象,从而调用同族中不同类的虚函数,这种方式就是动态关联,也叫做滞后关联。

分享到:
评论

相关推荐

    简要解读C++的动态和静态关联以及虚析构函数

    C++静态关联与动态关联、C++是怎样实现多态性的 在现实生活中,多态性的例子是很多的。我们分析一下人是怎样处理多 态性的。例如,新生被录取人大学,在人学报到时,先有一名工作人员审查材料,他的职责是甄别资格,...

    c++多态性与虚函数练习题

    3、掌握静态关联和动态关联的概念和用法。 4、理解纯虚函数和抽象类的概念和用法。 (二)实验内容 1、定义一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数getA()和getB()...

    C++的静态联编和动态联编详解

    静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型,C语言中,...

    详解C++ 多态的两种形式(静态、动态)

    静态多态和动态多态的区别其实只是在什么时候将函数实现和函数调用关联起来,是在编译时期还是运行时期,即函数地址是早绑定还是晚绑定的。静态多态是指在编译期间就可以确定函数的调用地址,并生产代码,这就是静态...

    完美的C++:C++CLI

    C++当然指的是Bjarne Stroustrup在BELL实验室发明的C++语言,它实现了运行时取得速度和尺寸最佳化的静态对象模型,然而它除了堆分配外不支持程序的动态修改,它准许无限地接近底层设备,但在程序运行过程中几乎无法...

    C++ Primer第四版【中文高清扫描版】.pdf

    【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 蒋爱军 梅晓勇 林...18.1.1 C++中的内存分配 632 18.1.2 ...

    C++的概念/解释,可打印,华南师范大学C++考过。

    22. 静态关联和动态关联 7 23. 函数重载与虚函数的不同 7 24. 虚析构函数 8 25. 纯虚函数 8 26. 抽象类 8 27. 抽象类与接口的区别 8 28. 32.输入输出流 8 29. 标准的输出流对象有哪些 8 30. 标准的输入流对象有哪些 ...

    C++编程思想习题

    9.3C++中的静态成员 9.3.1定义静态数据成员的存储 9.3.2嵌套类和局部类 9.3.3静态成员函数 9.4静态初始化的依赖因素 9.5转换连接指定 9.6小结 9.7练习 第10章 引用和拷贝构造函数 10.1C++中的指针 10.2C+十中的...

    c++多线程的创建挂起执行与销毁

    4. 新增一个静态的全局变量,用于记录所有线程的状态:static int GlobalVar=10000; 5. 声明并编写线程函数,注意只能有一个参数,且函数的返回值类型也是固定的;函数名可以自定义; DWORD WINAPI ThreadFun(LPVOID...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    78.9.1 动态存储方式与静态动态存储方式 120 8.9.2 auto变量 120 8.9.3 用static 声明局部变量 121 8.9.4 register 变量 122 用extern 声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    1.1.2 C++与面向对象的程序设计 1 1.1.3 C++的特点 2 1.1.4 C++术语 2 1.1.5 C++程序示例 2 1.2 变量、表达式及赋值语句 4 1.2.1 标识符 4 1.2.2 变量 5 1.2.3 赋值语句 6 1.2.4 更多赋值语句 8 1.2.5 ...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    2.3.6 ISO/ANSI C++中的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 ...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    2.3.6 ISO/ANSI C++中的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 ...

    详解C++虚函数的工作原理

    静态绑定与动态绑定 讨论静态绑定与动态绑定,首先需要理解的是绑定,何为绑定?...在C++中动态绑定是通过虚函数实现的,是多态实现的具体形式。而虚函数是通过虚函数表实现的。这个表中记录了虚函数的地址,

    Visual C++ 2005入门经典.part05.rar (整理并添加所有书签)

    2.3.6 ISO/ANSI C++中的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 ...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     12.1 动态内存与智能指针 400  12.1.1 shared_ptr类 400  12.1.2 直接管理内存 407  12.1.3 shared_ptr和new结合使用 412  12.1.4 智能指针和异常 415  12.1.5 unique_ptr 417  12.1.6 weak_ptr 420  12.2 ...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     12.1 动态内存与智能指针 400  12.1.1 shared_ptr类 400  12.1.2 直接管理内存 407  12.1.3 shared_ptr和new结合使用 412  12.1.4 智能指针和异常 415  12.1.5 unique_ptr 417  12.1.6 weak_ptr 420  12.2 ...

Global site tag (gtag.js) - Google Analytics