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