binding(联编)

联编(Binding): 确定具有多态性的语句调用哪个函数的过程。

Static Binding (静态联编) : 在程序编译时确定调用哪个函数 例:函数重载

Dynamic Binding (动态联编) :在程序运行时,才能够确定调用哪个函数

用动态联编实现的多态,也称为运行时的多态

基类定义了虚同名函数,那么派生类中的同名函数自动变为虚函数(所以可以不加virtual关键字)

动态联编的开销比静态联编大;

Summary: static binding v.s. dynamic binding

基类与派生类中有同名函数

1. 通过派生类对象访问同名函数 -> 静态联编

2. 通过基类对象的指针访问同名函数(非虚函数) -> 静态联编

3. 通过基类对象的指针访问同名虚函数 -> 动态联编

其实,按我自己的理解,根本不需要分那么多的类别。在老师总结的情况当中,只有一种情况是动态联编:

那就是 1.存在override(请见之前的随笔)

2.基类的指针指向派生类对象/基类是派生类引用

3.‘2.’中的指针或引用调用‘1.’中的同名虚函数函数。

其他都是静态联编

时间: 2024-08-11 05:45:07

binding(联编)的相关文章

【CPP-NOTE】动态联编

多态中动态联编特性 联编是指一个计算机程序的不同部分彼此关联的过程.按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编. 源代码中的函数调用解释为执行特定的函数代码被称为函数名联编(binding). 在编译过程中进行联编被称为静态联编(static binding),又称早期联编(early binding).  编译器必须生成能够在程序运行时选择正确的虚方法的代码,这被称为动态联编(dynamic binding), 又称为晚期联编(late binding).     

c++知识点总结--静态与动态联编

静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型 动态联编是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定,动态联编对函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果.C++中一般情况下联编也是静态联编,但是一旦涉及到多态和虚拟函数就必须要使用动态联编了. 类与类指针 父类指针引用父类对象,完全

静态联编和动态联编初认识。

多态性: 静态联编多态性(编译时的多态性)通过函数,运算符的重载实现的(系统根据形参的个数来实现编译的多态性) 动态联编多态性(运行时的多态性)通过继承,虚函数(当运行时才能实现对象与函数的联编)C++规定:动态联编是在虚函数的支持下实现的 条件:指向派生类对象的基类指针或者引用派生类对象的基类引用(调用虚函数) 动态联编: 1 #include <iostream> 2 using namespace std; 3 class shape{ 4 public: 5 void virtual

c++之静态联编

 联编是指一个程序模块.代码之间互相关联的过程.  静态联编,是程序的匹配.连接在编译阶段实现,也称为早期匹配.    重载函数使用静态联编.  动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.   switch 语句和 if 语句是动态联编的例子. 普通成员函数重载可表达为两种形式: 1. 在一个类说明中重载 例如:  void Show ( int , char ) ; void Show ( char * , float ) ; 2. 基类的成员函数在派生类重载.有 3 种编译区

多工程联编的Pods如何设置

多工程联编的Pods如何设置 (2014-07-17 13:57:10) 转载▼ 标签: 联编 多工程 分类: iOS开发 如今,CocoaPods使用越来越多,几乎每个项目都会使用到.有时候我们的项目可能是有几个模块组成的,每个模块都可以作为一个单独的工程,然后所有的工程都供主工程使用,这就是多工程联编,如何利用pods的Podfile来实现这个功能,下面就为大家提供这种情况下Podfile的写法: workspace 'Myworkspace' xcodeproj 'MyApp/MyApp.

静态联编和动态联编

1.联编是指对于相同名字的若干个函数的选择问题 2.实例 #include <iostream> using namespace std; const double PI = 3.1415926; class Point { private: double x,y; public: Point(double i,double j) { x = i; y = j; } double Area() { return 0; } }; class Rectangle:public Point//矩形类

C++ 虚函数、静态联编和动态联编、抽象类

 //C++ 虚函数.静态联编和动态联编.抽象类 #include<iostream> #include<string> using namespace std; class People { private: string name; int age; public: People(string name_, int age_):name(name_), age(age_){} People(){cout << "基类默认构造函数" <&

C++之静态联编和动态联编

联编是指一个程序自身彼此关联的一个过程.按照联编所进行的阶段不同,可分为静态联编和动态联编两种. 静态联编 静态联编是指在程序编译连接阶段进行联编.这种联编又称为早期联编,这是因为这种联编工作是在程序运行之前完成的. 编译时所进行的联编又称为静态束定.束定是指确定所调用的函数与执行该函数代码之间的关系. 下面来看一个静态联编的程序例题: <span style="font-size:18px;">#include <iostream> using namespa

xcode的环境变量,Build Settings参数,workspace及联编设置

一.xcode4中的环境变量 $(BUILT_PRODUCTS_DIR) build成功后的,最终产品路径--可以在Build Settings参数的Per-configuration Build Products Path项里设置 $(TARGET_NAME) 目标工程名称 $(SRCROOT) 工程文件(比如Nuno.xcodeproj)的路径 $(CURRENT_PROJECT_VERSION) 当前工程版本号 其他: 当编译静态库,设备选模拟器(iPhone 5.0 Simulator)