写“::namespace::identifier”和“namespace::identifier”有什么区别?

2024-02-24

我在代码中看到了这两种方法。您能解释一下两者之间有什么区别吗?我认为它与 C++ 完成名称空间查找的方式有关,您能否也提供一些有关此的信息,或者可能是一个好的文档的链接?谢谢。


Example:

#include <cstdio>

namespace x {
    const int i = 1;
}

namespace y {
    namespace x {
        const int i = 2;
    }

    void func()
    {
        std::printf("x::i = %d\n", x::i);
        std::printf("::x::i = %d\n", ::x::i);
    }
}

int main()
{
    y::func();
    return 0;
}

Output:



x::i = 2
::x::i = 1
  

解释:

  • 当您引用类似这样的标识符时x::i,使用的定义是“最接近的”x::i。里面::y::func, 定义::y::x::i比定义更接近::x::i。相比之下,没有这个功能::y::std::printf so ::std::printf被用来代替。

  • 当您引用类似这样的标识符时::x::i,没有可能的歧义:它寻找名为的顶级命名空间x,然后找到一个i inside.

所以使用::开头允许您拼写全局事物的全名。这还允许您区分局部变量和全局变量。

示例2:

#include <cstdio>
const int x = 5;
int main()
{
    const int x = 7;
    std::printf("x = %d\n", x);
    std::printf("::x = %d\n", ::x);
    return 0;
}

Output:



x = 7
::x = 5
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

写“::namespace::identifier”和“namespace::identifier”有什么区别? 的相关文章

  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 无法使用 ruby​​ on Rails 和回形针 gem 上传 zip 文件

    我正在开发 Rails Web 应用程序 刚刚创建并准备了一些模型和东西 该应用程序非常简单 但现在我在设置宝石回形针以向模型添加附件时遇到了问题 几乎一切都工作正常 例如附加图像 jpg 甚至 pdf 但我无法上传 zip 文件 我尝试了
  • 是否还需要双缓冲

    由于今天的卡似乎保留了渲染命令列表 并且仅在调用时刷新glFlush or glFinish 真的还需要双缓冲吗 我正在 Linux ATI Mobility radeon 卡 上使用 SDL OpenGL 开发的 OpenGL 游戏实际上
  • 在 apache poi(对于 .xlsx 文件)中创建单元格注释并禁用显示注释

    我正在尝试使用 apache poi 创建单元格注释 我可以创建注释 但默认情况下它们始终显示在 Excel 中 我必须手动右键单击单元格并取消勾选显示注释以使它们不可见 现在它们仅当我将鼠标悬停在单元格上时才出现 是否可以使单元格注释默认
  • 在 Java 中使用 Jackson 反序列化异常/可抛出的问题

    我在反序列化时遇到问题Exception and Throwable使用 Jackson 版本 2 2 1 的实例 考虑以下片段 public static void main String args throws IOException
  • 如何获取 Gmail 未读邮件数

    我使用以下代码来获取 Gmail 中的未读电子邮件计数 但是 它返回错误 can t connect Too many login failures 我在这里缺少什么吗 我正在测试的 Gmail 帐户中启用了 IMAP 和 POP NOTE
  • 选中/取消选中 datagridview 上的复选框

    有人可以帮助我为什么它不起作用吗 我有一个checkbox如果我点击它 这应该取消选中 datagridview 内的所有复选框 这些复选框在包含用户选择的复选框之前已选中 这是代码 private void chkItems Checke
  • C++ 编译器可以优化同一指针上的重复虚函数调用吗? [复制]

    这个问题在这里已经有答案了 假设我有以下代码 void f PolymorphicType p for int i 0 i lt 1000 i p gt virtualMethod something 编译器生成的代码会取消引用吗p s v
  • Imap 搜索条件 - imaplib (python)

    我正在使用 python 的 imaplib 并且遇到了一个奇怪的行为 我真的不知道这是否是 imap 或 imaplib 问题 功能 所以我希望有人能给我一些启发 在我的项目期间 我对我的 Gmail 邮箱进行了多次搜索 想象一下我使用以
  • symfony 单元测试:添加/修改表单操作

    我有一个没有操作的表单 用 javascript 提交 我试图为其编写一个单元测试 但它失败了 因为缺少 action 属性 InvalidArgumentException 当前 URI 必须是绝对 URL 有没有办法在单元测试中添加它或
  • 在派生抽象类中强制执行事件

    我正在尝试创建我所认为的翻译类 以便我的程序可以与各种目标平台对话 每个平台都将由抽象类的单独实现来处理 为了简单起见 我已经削减了一些内容 我有一个抽象类 有几个抽象方法 abstract class ControllerBase pub
  • 如何使用 RefCursor 返回类型测试 Oracle 存储过程?

    我正在寻找有关如何在 SQL Developer 或 Embarcardero Rapid XE2 中测试 Oracle 存储过程的良好解释 谢谢 就像是 create or replace procedure my proc p rc O
  • Quartz.net 中每次执行后 JobData 不会持久化

    我有一份工作想要跟踪 50 次最新运行 由于某种原因 状态似乎没有存储在我的简单原型中 PersistJobDataAfterExecution public class ApiJob IJob private const string J
  • 使用 jsTree 进行延迟加载

    我试图在 jtree 扩展时动态加载它们的节点 我发现的小文档位于末尾这一页 http www jstree com docs json 我找到了一些解决方案 可以使用类似的循环逐一创建节点this one https stackoverf
  • 冬眠,偷懒还是不偷懒? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 I have entity A 与多对多关系entity B 所以表格布局是 A AB mapping table B 获取实体A的对象 我打电
  • 仅当使用reactJS 城市名称不匹配时才显示错误消息

    我有一个搜索框 当用户输入 5 个或更多字符时 它应该在搜索框中显示完整地址 IT 工作正常 但现在的问题是当城市名称不匹配时 它应该显示错误消息 问题是 匹配的城市名称和不匹配的城市都显示错误消息 我该如何解决这个问题 请问有人可以帮我吗
  • 为什么在删除实体时会出现 StaleObjectStateException?

    在我的 Spring Boot Web 应用程序中 我有一个控制器 它提供了一种从数据库中删除实体的方法 该方法又调用 DAO 类 然而 当我打电话时entityManager remove entity 我收到一个StaleObjectS
  • SQL Server ON DELETE 触发器

    我正在尝试创建一个基本数据库触发器 当删除database2 table2 中的行时 该触发器有条件地从database1 table1 中删除行 我是触发器新手 希望学习实现此目标的最佳方法 这是我到目前为止所拥有的 建议 CREATE
  • 如何使用 GDB 调试共享对象库中的函数?

    我正在尝试验证共享对象库中函数的功能 在带有main函数 我会简单地start程序和 gdb 会自动在 main 上设置断点 但这显然在这里不可用 假设我有一些add c long add long x long y return x y
  • 在 Xamarin.Forms 中处理 Android 推送通知操作

    所以我只是在我的 Xamarin Forms Android 应用程序中实现了 FCM本指南 https learn microsoft com en us azure app service mobile app service mobi
  • 写“::namespace::identifier”和“namespace::identifier”有什么区别?

    我在代码中看到了这两种方法 您能解释一下两者之间有什么区别吗 我认为它与 C 完成名称空间查找的方式有关 您能否也提供一些有关此的信息 或者可能是一个好的文档的链接 谢谢 Example include