如果全局变量和对象具有静态存储持续时间和外部链接?
函数是否也具有静态存储持续时间和外部链接?
结构、类和枚举器(我知道有外部链接)/联合呢?
我认为它们没有存储持续时间并且没有链接,但后来我认为(全局)函数默认具有外部链接,但是在一个类中它们具有类范围,它们有内部链接还是?
如果全局变量和对象具有静态存储持续时间和外部链接?
函数是否也具有静态存储持续时间和外部链接?
结构、类和枚举器(我知道有外部链接)/联合呢?
我认为它们没有存储持续时间并且没有链接,但后来我认为(全局)函数默认具有外部链接,但是在一个类中它们具有类范围,它们有内部链接还是?
存储期限和链接是不相关的概念。
函数没有“存储持续时间”,因为函数不驻留在存储中。只有对象有存储期限。类型也不驻留在存储中,这就是类型没有存储持续时间的原因。
说类通常没有链接是不正确的。在命名空间范围内声明的命名类具有外部链接。具有外部链接的类的成员函数也具有外部链接。本地声明的类和无名类没有链接。
函数没有正式的存储持续时间,但本质上它们是静态的(即,每个函数都存在于程序的整个持续时间内)。如果您定义它们static
或在匿名命名空间内定义它们,它们具有内部链接,否则具有外部链接。
存储类适用于对象,而不是类、结构或联合之类的类型定义。拥有两个相同类的对象是相当常见的,一个具有静态存储持续时间,另一个具有自动存储持续时间。
同样,您可以创建一个具有内部链接的对象和另一个具有外部链接的对象:
T x;
static T y;
类的链接也是如此:
class X { }; // external linkage
namespace {
class Y {}; // internal linkage
};