`

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

阅读更多

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

二、认知:

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

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

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

分享到:
评论

相关推荐

    c++ qt 静态函数中发信号

    本篇将详细介绍如何在C++ Qt的静态函数中发送信号以及回调函数的基本使用。 首先,理解Qt的信号与槽机制。信号是对象状态改变时的通知,而槽是响应这些通知的函数。当一个信号被发射,与其连接的槽函数会被调用。在...

    C++ 图形界面 实现文本编辑框输入同步显示到静态文本框

    这可以通过设计视图在资源编辑器中完成,或者在代码中动态创建。 3. **连接控件**:将控件与成员变量关联,这通常在`OnInitDialog`方法中完成。为`CEdit`和`CStatic`分配成员变量,如`CEdit m_editBox`和`CStatic m...

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

    C++是一种强大的面向对象编程语言,它支持多种特性来实现多态性,其中包括静态关联和动态关联。静态关联,也称为早期绑定或静态绑定,主要指的是在编译时期就能确定函数调用的对象和版本,例如函数重载。而动态关联...

    C++静态成员、友元函数、类模板实验

    静态成员函数则不与任何特定对象关联,它可以访问类的静态数据成员,但不能访问非静态成员。在类模板实验中,静态成员常用于实现单例模式或作为类的全局计数器。 其次,友元函数是C++中的一个重要特性,它允许一个...

    C++静态成员函数的说明及使用

    C++中的静态成员函数是一种特殊类型的成员函数,它不依赖于类的实例存在,而是直接与类本身相关联。在理解和使用静态成员函数时,有以下几个关键知识点: 1. **定义**: 静态成员函数的定义与普通成员函数不同,...

    全局数据管理—使用C++类的静态成员取代全局数据

    在标题“全局数据管理—使用C++类的静态成员取代全局数据”中,重点在于静态数据成员。静态数据成员是类的一个共享属性,不与任何特定的对象关联,所有该类的对象共享同一份存储空间。这使得它们成为实现全局数据的...

    详解c++ 静态成员变量

    C++中的静态成员变量是一种特殊的成员,它们不与任何特定的对象实例相关联,而是属于类本身。静态成员变量的声明通常在类定义内部,而定义和初始化则需要在类的外部进行,这是因为它们的生命周期贯穿整个程序,而...

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

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

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

    C++中的联编是编程过程中的一个...理解静态联编和动态联编以及它们在C++中的实现机制,对于编写高效、灵活的面向对象程序至关重要。正确使用虚函数和虚析构函数可以避免许多潜在的问题,尤其是在设计复杂类层次结构时。

    C++静态成员函数不能调用非静态成员变量(详解)

    总结来说,C++中的静态成员函数不能调用非静态成员变量,主要是由于静态成员函数不与任何特定对象绑定,没有`this`指针,因此无法访问需要对象实例才能确定的非静态成员。要访问非静态成员变量,必须通过非静态成员...

    C++静态成员函数小结.doc

    C++中的静态成员函数是类的一个重要特性,它们在程序设计中扮演着独特角色。静态成员函数和静态数据成员有着显著的特点和用途。 一、静态数据成员 静态数据成员是类的共享属性,不依赖于类的任何实例,而是属于...

    C++类的静态成员初始化详细讲解

    这样做是因为静态成员的定义与类的实例无关,而是与类本身关联。 静态数据成员可以是任意类型,包括const对象、数组或类对象。例如,`Account`类可能有一个静态的字符串常量`name`: ```cpp class Account { ...

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

    #### 三、静态关联与动态关联 - **静态关联**:在编译时就已经确定了函数的具体版本,即调用的是哪个类的函数版本。这是默认的行为。 - **动态关联**:在运行时才确定调用哪个函数的具体版本,即多态性。通过虚函数...

    关于C++静态成员函数访问非静态成员变量的问题

    尝试在静态成员函数`FunctionA`中修改`member`会引发编译错误,因为`member`是非静态的,它与类的每个实例相关联,而`FunctionA`无法访问这些实例。 解决这个问题的一种常见方法是将`member`声明为静态成员,这样它...

    完美的C++:C++CLI

    C++/CLI 是一种将 C++ 语言与 CLI(公共语言结构)相结合的语言,它提供了对动态组件编程模型的支持,并在保持 C++ 语言的静态对象模型的同时,提供了对 CLI 的支持。本文将详细介绍 C++/CLI 的概念、特点和应用。 ...

    类定义与实现如何相互关联

    在C++编程中,类是面向对象编程的基础,它封装了数据和操作这些数据的方法。类的定义和实现是两个不同的概念,它们之间的关联对于理解C++程序的编译和链接过程至关重要。以下是对类定义与实现关联的详细解释。 **类...

    C++LAB实验例子

    静态成员函数也是类似的,它们不与任何特定的对象实例关联,而是属于类本身。在LAB中,你可以看到如何声明和使用静态变量和静态成员函数的例子,了解它们在不同场景下的应用。 此外,LAB可能还包含了其他C++特性,...

    C++基础面试题

    C++基础面试题涵盖了许多关键概念,包括COM、Winsock、Win32 API函数、窗口创建、模态对话框和非模态对话框的区别、Windows消息类型以及多态中的静态关联和动态关联。以下是这些知识点的详细解释: 1. **COM(组件...

Global site tag (gtag.js) - Google Analytics