函数,结构,类,枚举和联合的存储持续时间

时间:2013-10-06 07:21:20

标签: c++

如果全局变量和对象具有静态存储持续时间和外部链接?

功能是否具有静态存储持续时间和外部链接?

结构,类和枚举器(我知道有外部链接)/联合会怎么样?

我认为他们没有存储持续时间并且没有链接,但是我认为(全局)函数默认具有外部链接,但是在类中它们具有类范围它们是否具有内部链接或?

2 个答案:

答案 0 :(得分:2)

存储持续时间和链接是不相关的概念。

函数没有“存储持续时间”,因为函数不驻留在存储中。只有对象有存储持续时间。类型也不驻留在存储中,这就是类型没有存储持续时间的原因。

说类通常没有联系是不正确的。在命名空间范围内声明的命名类具有外部链接。具有外部链接的类的成员函数也具有外部链接。在本地声明的类和无名的类没有链接。

答案 1 :(得分:0)

函数没有正式的存储持续时间,但实质上它们是静态的(即,在程序的整个持续时间内存在每个函数)。如果您定义它们static或在匿名命名空间内部,则它们具有内部链接,否则为外部链接。

存储类适用于对象,而不是类,结构或联合等类型定义。拥有相同类的两个对象是相当普遍的,一个具有静态存储持续时间,另一个具有自动存储持续时间。

同样,您可以使用内部链接创建一个对象,使用外部链接创建另一个对象:

T x;
static T y;

类的链接也是如此:

class X { }; // external linkage

namespace { 
   class Y {}; // internal linkage
};