0

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

函数是否也具有静态存储持续时间和外部链接?

结构、类和枚举器(我知道有外部链接)/联合呢?

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

4

2 回答 2

2

存储期限和链接是不相关的概念。

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

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

于 2013-10-06T07:23:44.083 回答
0

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

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

同样,您可以创建一个具有内部链接的对象和另一个具有外部链接的对象:

T x;
static T y;

类的链接也是如此:

class X { }; // external linkage

namespace { 
   class Y {}; // internal linkage
};
于 2013-10-06T07:33:17.520 回答