繁体   English   中英

在C ++中,双冒号前的&表示什么?

[英]what does a ampersand before double colon mean in c++?

我在Google的protobuf生成的以下代码中找到了这种用法。

inline void Datum::set_data(const void* value, size_t size) {
  set_has_data();
  //over here.
  if (data_ == &::google::protobuf::internal::kEmptyString) {
     data_ = new ::std::string;
  }
 data_->assign(reinterpret_cast<const char*>(value), size);
}

谢谢:-)!

这是两件完全无关的事情,也许最好考虑一下

&(::google::protobuf::internal::kEmptyString)

&表示地址运算符,与您完成的操作完全相同:

int xyzzy = 7;
int *pointer_to_xyzzy = &xyzzy;

另一方面, ::是全局名称空间说明符,以确保您不会开始在当前名称空间中查找。

例如,以下程序:

#include <iostream>

int x = 7;
namespace xyzzy {
    int x = 42;
    int getxa() { return ::x; }
    int getxb() { return x; }
}

int main() {
    std::cout << xyzzy::getxa() << '\n';
    std::cout << xyzzy::getxb() << '\n';
    return 0;
}

因为getxa()函数使用全局名称空间说明符而不是xyzzy所以输出7后跟42

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM