当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C++中静态联编和动态联编介绍</b>[VC/C++编程]

赞助商链接



  本文“<b>C++中静态联编和动态联编介绍</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

联编是指一个计算机程序自身彼此关联的历程.按照联编所举行的阶段差别,可分为两种差别的联编办法:静态联编和动态联编.

静态联编

静态联编是指联编工作呈目前编译衔接阶段,这种联编又称早期联编,因为这种联编历程是在程序开始运行之前完成的.

在编译时所举行的这种联编又称静态束定.在编译时就办理了程序中的操作调用与履行该操作代码间的关系,肯定这种关系又称为束定,在编译时束定又称静态束定.下面举一个静态联编的例子.

  #include
   class Point
{
public:
Point(double i, double j) { x=i; y=j; }
double Area() const { return 0.0; }
private:
double x, y;
};
class Rectangle:public Point
{
public:
Rectangle(double i, double j, double k, double l);
double Area() const { return w*h; }
private:
double w, h;
};
Rectangle::Rectangle(double i, double j, double k, double l):Point(i, j)
{
w=k; h=l;
}
void fun(Point &s)
{
cout< }
   void main()
{
Rectangle rec(3.0, 5.2, 15.0, 25.0);
fun(rec);
}
   该程序的运行后果为:
   0

输出后果表明在fun()函数中,s所引用的对象履行的Area()操作被关联到Point::Area()的实现代码上.这是因为静态联编的后果.在程序编译阶段,对s所引用的对象所履行的Area()操作只能束定到Point类的函数上.因此,招致程序输出了所不盼望的后果.因为我们盼望的是s引用的对象所履行的Area()操作应当束定到Rectangl类的Area()函数上.这是静态联编所达不到的.

动态联编

从对静态联编的上述解析中可以知道,编译程序在编译阶段并不能切当知道将要调用的函数,只有在程序履行时才能肯定将要调用的函数,为此要切当知道该调用的函数,要求联编工作要在程序运行时举行,这种在程序运行时举行联编工作被称为动态联编,或称动态束定,又叫晚期联编.

动态联编实际上是举行动态辨认.在上例中,前面解析过了静态联编时,fun()函数中s所引用的对象被束定到Point类上.而在运行时举行动态联编将把s的对象引用束定到Rectangle类上.可见,同一个对象引用s,在差别阶段被束定的类对象将是差别的.那么若何来肯定是静态联编还是动态联编呢?C++规定动态联编是在虚函数的支持下实现的.

从上述解析可以看出静态联编和动态联编也都是属于多态性的,它们是差别阶段对差别实现举行差别的挑选.上例中,实现上是对fun()函数参数的多态性的挑选.该函数的参数是一个类的对象引用,静态联编和动态联编和动态联编实际上是在挑选它的静态范例和动态范例.联编是对这个引用的多态性的挑选.


  以上是“<b>C++中静态联编和动态联编介绍</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .