问题标签 [scope-resolution-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5303 浏览

c++ - 如何使用 C++ 中的函数访问全局变量?

我想从函数访问分配给主函数中全局变量的值。我不想在函数中传递参数。

我试过参考不同的堆栈溢出类似的问题和 C++ 库。

我希望输出是,5但它显示0

0 投票
2 回答
148 浏览

c++ - 运算符重载中的范围运算符

我无法理解运算符重载中的范围运算符。当他们不使用它时,有一些例子。当我应该写时我T::operator.可以只写操作符仍然可以正常工作还是建议使用::?

这个例子:


原型示例(用于类 T) 类定义内部

我可以这样写T& operator +=(const T2& b){} 还是应该一直这样写T& T::operator +=(const T2& b){}

0 投票
1 回答
52 浏览

php - 字符串解析运算符到对象

如何从以下字符串创建对象:

Normaly 你会删除引号,但它是一个动态调用,例如

我想要达到的是创建一个简单的函数,您可以在其中提供类名和 const 以获取其值。

0 投票
3 回答
75 浏览

c++ - 为什么我不能使用 A 的对象调用 showA()?

为什么我们可以在没有对象的情况下调用 showA() 方法?但是如果我在方法定义中使用 void A::showA(A& x) 那么我必须使用 A 的对象来调用它,为什么?

0 投票
2 回答
188 浏览

c++ - 用于返回嵌套类类型的范围解析运算符

我知道范围解析运算符::用于识别和消除不同范围中使用的标识符。

在此处提供的示例中,C++ 定义类成员结构并在成员函数中返回它

您可以创建一个返回嵌套类类型的成员函数userInfo

  1. 为什么必须在函数定义中声明两次作用域?UserInformation::UserInfo UserInformation::getInfo(int userId)如果只声明一次是错误的,但据我了解,我认为在开始时声明一次,在返回值之前将我们置于正确的范围内?
  2. 在上面的函数中,我添加Userinfo x;以表明可以在没有范围解析运算符的情况下声明和使用嵌套类类型。为什么允许这样做?
0 投票
3 回答
471 浏览

c++ - 离线成员函数定义是否需要完全限定的类名到全局范围?

这个问题让我想知道在类外成员函数定义中完全限定类名(包括全局范围运算符)是否有用/有必要。

一方面,我以前从未见过这样做(而且正确执行此操作的语法似乎晦涩难懂)。另一方面,C++ 名称查找非常重要,因此可能存在极端情况。

问题:

是否存在引入类外成员函数定义
ReturnType (::Fully::Qualified::Class::Name::MemberFunctionName)(...) { ... }
不同于
ReturnType Fully::Qualified::Class::Name::MemberFunctionName(...) { ... }(无全局范围::前缀)的情况?

请注意,成员函数定义必须放在包含类的命名空间中,因此不是一个有效的示例。

0 投票
1 回答
621 浏览

php - 理解范围解析运算符在 PHP 语言中的定义

在 php 手册中,他们将范围解析运算符定义如下:

范围解析运算符(也称为 Paamayim Nekudotayim)或更简单的术语是双冒号,是一个允许访问类的静态、常量和重写属性或方法的标记。

我的理解是,由于我们无法使用 评估静态属性、类常量和静态方法$this,因此我们需要::. 我不明白为什么::允许从类内部评估非静态函数。可以说,子类可能想用 评估父类中定义的方法parent::baseClassMethod(),但它可能也想评估父类中定义的属性,但::无法评估属性。可以说父类的属性是继承的,所以我们可以简单地用 来评估它们$this->prop,但方法也是如此。我们::仅在子类中重写方法时才使用 for 方法。同样我们需要::评估子类中的覆盖属性。与 php 手动定义相反,如果您尝试使用 评估覆盖的属性::,则会引发错误。

为了说明我的观点,我有以下示例 PHP 代码:

总结一下,我主要有两个具体问题:

  1. 为什么我们不能访问::定义中定义的覆盖属性?
  2. ::与定义相反,为什么我们可以访问类中的非静态函数?

PS:在stackoverflow上也提出了类似的问题。不存在令人满意的答案,而且我正在寻找更适合programmers.stackexchange 的概念性和有见地的答案。

0 投票
1 回答
63 浏览

c++ - is_const<> 的调用版本,但用于变量而不是类型,在一行中

嗨,我正在学习 c++,我读到了诸如 is_const 之类的类型特征。is_const 可以在一行中调用,例如,

我制作了自己的 is_const 版本,但要测试变量是否为 const,并且可以这样使用,

我也想在一行中调用 check_const ,但是编译器不断给我错误,例如

当我尝试这样称呼它时

如何更改 check_const,以便可以在一行中调用它?

0 投票
1 回答
60 浏览

c++ - 如何在 cpp 中使用范围解析运算符创建专业化模板

问题是最后一段代码。 编译错误 -> 错误:'int Temp::increment()' 的模板 ID 'increment<>' 与任何模板声明都不匹配

0 投票
0 回答
22 浏览

c++ - 函数之前的 C++ 范围解析运算符

为什么不需要Test::before F(t)

这背后的规律是什么?