当前位置:  开发笔记 > 编程语言 > 正文

范围解析运算符和常量

如何解决《范围解析运算符和常量》经验,为你挑选了1个好方法。

我们来看下面的代码:

#include  // std::string    
using namespace std;
int main() {
  //const::int i = 42;       -> Error: "expected id-expression before 'int'"
  const::string str = "Foo"; // No error: why?
}

为什么这段代码会编译?当XXX是基本类型时,错误"预期在XXX之前的id-expression"出现.

const::char c = 1;   // error: expected id-expression before 'char'
const::double d = 2; // error: expected id-expression before 'double'
const::float f = 3;  // error: expected id-expression before 'float'
const::bool b = 4;   // error: expected id-expression before 'bool'

TartanLlama.. 7

const::string被解析为const ::string.::string意味着要string在全局命名空间中查找,并且因为已经注入std到全局命名空间中,std::string所以找到并且一切都很花哨.

int是一个内置的类型,是不是在任何命名空间,所以没有这样的东西::int或者std::int,因此错误.



1> TartanLlama..:

const::string被解析为const ::string.::string意味着要string在全局命名空间中查找,并且因为已经注入std到全局命名空间中,std::string所以找到并且一切都很花哨.

int是一个内置的类型,是不是在任何命名空间,所以没有这样的东西::int或者std::int,因此错误.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有