【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
看过设计模式的朋友都知道,我们在设计单件模式的时候离不开类的静态函数。和类的成员变量不同,类的静态变量属于全部类对象数据;同样和类的成员函数不同,类的静态函数属于全部类函数共有。这句话读来想来有一些拗口,不过没有关系,我们可以通过一段代码来说明问题。
(1)静态变量
老规矩,我们首先对类进行初步定义,如下所示:
那么,这里出现的value是不是所共有的,我们可以看看相关的函数代码即可:
我们直接看74行和75行。我们看到复制的对象地址都是惊人的一致,这说明实际上m和n所指的value实际上是同一个地址0x401005。不过,类的静态对象有一个要求,那就是对象的静态变量必须像全局变量一样进行初始化操作。
(2)静态函数
静态函数和静态变量一样,实际上就是类的全局函数。它之所以和普通的成员函数不一样,就是因为它不需要定义类的类型就能使用这个函数。根据上面的信息,我们可以重新定义一下这个类:
那么类的静态函数是这样使用的呢?大家看看下面这样一个函数:
静态函数不需要对应的类对象,所以也就不需要this指针。这就是成员函数和静态函数的区别,仅此而已。
【预告: 下面一篇博客介绍类的算术重载符】
分享到:
相关推荐
如果你不了解C++类的实现机制,不知道底层如何调用构造函数,静态变量,虚函数的底层等等关于C++类的底层实现,请一定要阅读本文档,因为他会让你豁然开朗。
0018 静态变量的定义及应用 7 0019 使用全局变量的注意事项 7 0020 如何使用全局对象 7 0021 变量作用范围 8 0022 创建自己的变量类型 8 0023 如何声明同样类型的多个变量 8 0024 extern关键字的使用 ...
7.9.2 类的静态函数成员 338 7.10 类对象的指针和引用 338 7.10.1 类对象的指针 338 7.10.2 类对象的引用 341 7.11 C++/CLI编程 343 7.11.1 定义数值类类型 344 7.11.2 定义引用类类型 348 7.11.3 ...
用C++语言编制的源程序要变为目标程序必须要经过( d )。 (a) 解释 (b) 汇编 (c) 编辑 (d) 编译 3.C++程序基本单位是( c )。 (a) 数据 (b) 字符 (c) 函数 (d) 语句 4. C++程序中的语句必须以( b )结束。 ...
0167 运行时库和静态库与DLL的比较 78 0168 快速删除项目下Debug 文件夹中临时文件 78 0169 Visual C++文件扩展名介绍 78 0170 Visual C++快捷键 79 3.4 程序调试 82 0171 在发行版本中调试程序 82 0172...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 ...
2.2.14 函数调用之间允许使用别名 2.2.15 全局优化 2.2.16 产生内部函数的内联 2.2.17 优化math.h 2.3 Microsoft C++的优化开关 2.4 使用 Microsoft Visual Studio设置编译器选项 2.4.1 Project ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
可以使用由标准C语言和汇编ASM编写的静态库(LIB)作为函数功能扩展。可以调用WIN32API的大部分函数,已经在内部定义(.bi文件相当于C语言的.h)声明,直接引用即可,就像C++的WINDOWS开发包(SDK)。 NB的编译器是...
可以使用由标准C语言和汇编ASM编写的静态库(LIB)作为函数功能扩展。可以调用WIN32API的大部分函数,已经在内部定义(.bi文件相当于C语言的.h)声明,直接引用即可,就像C++的WINDOWS开发包(SDK)。 NB的编译器是...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 ...
这些信息包括源代码、函数名、标签、全局变量、静态变量。有限度的支持动态(栈)变量和结构。 代码高亮: OllyDbg 的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入栈、出栈、调用、返回、特殊的或是...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 ...
英文版 以下是我从网上所的相关介绍 内容简介 本书以X86系列微机为背景,从简单的Hello程序开始,系统而详细地阐述了X86微机汇编语言...15.4 使用C/C++和HLA编程 15.5 更多信息 附录A ASCII字符集 附录B 80x86指令集
6.2.2 低效的静态变量 140 6.2.3 数据的组织 141 6.2.4 消除除法 142 6.2.5 避免过大的循环 144 6.3 汇编和C/C++的混合编程 146 6.3.1 使用外置的汇编编译器 146 6.3.2 使用内嵌汇编 148 6.3.3 C++的函数调用规则 ...