-
来自C语言的静态元素
在c和c++中static 都有两种含义: 1. 在固定地址上进行存储分配 2. 对一个特定的编译单位来说是局部的。 函数内静态变量: 第一次调用时初始化,以后它将在两次函数调用之间保存其值。 静态对象:用户定义类型必须调用ctr来初始化,零赋值只对内建类型有效。 静态对象的dtr在main()退出时,或者标准C库函数exit()调用时才被调用。如果用标准C库函数abort()来退出,dtr不会调用。 可以用标准C库函数atexit()来指定当当程序跳出main()或者调用exit()时应执行的操作。 如果一个包含局部静态对象的函数从没调用过,那么这个对象的ctr不会执行,这样dtr也不会执行。 全局变量和函数有外部连接。在文件作用域内,static修饰的对象或函数对翻译单元来说是局部的,这些名字有内部连接,这意味着可以在其他翻译单元使用同样的名字。 其他类型说明符: auto extern register -
名字空间
1. 只能在全局范围内定义,可以嵌套 2. 定义的内容可以在多个头文件中延续 3. 结尾不必跟分号,class,struct,enum,union必须有分号 可以用alias: namespace BOSTON = BOSTONLibrary 每个翻译单元都可以包含一个未命名的namespace 可以在namespace的类定义中插入一个友元声明,这样友元函数就成了该namespace的一个成员。 在一个名字空间中引用一个名字: 用作用域解析符(int X::Y::i=9;)或者使用using指令(using namespace BOSTON;) 使用声明: using V::f; -
C++中的静态成员
把一个数据当做全局变量来存储,但又被隐藏在类的内部。 可以是public private 或者protected 定义必须出现在类的外部,且只能定义一次。 静态数组的初始化: 利用全部类型的静态常量,可以在类里提供定义,对于其他的对象,必须为之提供专门的外部定义。这些定义时内部连接的,所以可以放头文件中。 嵌套类和局部类 嵌套类可以有静态数据成员,局部类不可以。 静态成员函数: 可以用普通方法调用之,用"." 或者 "->" 把它与对象相联系。或者直接自我调用X::f(); 静态成员函数不能访问一般的数据成员,也只能调用其他的静态成员函数。 -
静态初始化的相依性
1.避免初始化互相依赖 2.把静态对象的定义放一个文件中 3.如果必须放在不同的编译单元时: 1)在库头文件中加一个额外的类,该类负责静态对象的动态初始化。 2)函数内部的静态对象在函数第一次调用时初始化,且只被初始化一次。 -
替代连接说明
extern后跟一个字符串来指定想声明的函数的连接类型,后面是函数声明 extern “C” { Int a(); Float b(); } 或在头文件中 extern “C” { #include "mydefine.h" }
C++编程思想-名字控制
最新推荐文章于 2025-05-12 00:22:42 发布
本文探讨了C和C++中static关键字的双重含义及其在函数内静态变量和静态对象中的应用。详细介绍了静态成员如何在类内部作为全局变量存储,同时保持隐藏特性。
1891

被折叠的 条评论
为什么被折叠?



