为什么静态局部变量的名称在c ++中没有链接?

问题描述 投票:-1回答:2

这可能是一个愚蠢的问题

但是据我所知,c ++中的“无链接”是指在范围内定义的实体不能从其他作用域引用相同的名称

但是我可以编写如下的简单代码在这种情况下,我可以说var仍然“没有链接”吗?(即使它们使用不同范围的相同名称来引用实体)

#include <iostream>

int* foo() {
    static int* var = new int(10);
    std::cout << "var in foo: " << *var << std::endl;
    return var;
}

int main() {
    int* var = foo();
    std::cout << "var in main: " << *var << std::endl;
}
c++ static local-variables linkage
2个回答
0
投票

我不确定您是否以正确的方式指代“链接”。如果您正在谈论编译过程的链接阶段,则将静态变量“链接”。


0
投票

对于这个模棱两可的问题我很抱歉因此,如果出现错误,我会像下面这样自己回答:请让我知道

© www.soinside.com 2019 - 2024. All rights reserved.