微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在未命名命名空间中默认初始化的内置类型对象是否具有明确定义的默认值?

如何解决在未命名命名空间中默认初始化的内置类型对象是否具有明确定义的默认值?

AFAIK 我们应该为全局对象使用一个未命名的命名空间,我们想让它们成为翻译单元的本地对象,而不是将这些对象定义为 static 全局对象。所以那里的对象是隐式静态的。

我想知道在没有初始化器(认初始化)的情况下定义像 int 这样的内置类型的对象是否具有与显式定义的 static 相同的定义值?

这是一个例子:

namespace ns{
    namespace {
        int x; // static
    }
    int y; // local non-static. // indeterminated value (UB if its value used) 
}

int main(){
    std::cout << ns::x << "\n";
    std::cout << ns::y << "\n";
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。