【发布时间】:2018-12-19 03:04:45
【问题描述】:
我有一个 A 类,它有两个静态变量。我想用另一个不相关的静态变量初始化一个,就像这样:
#include <iostream>
class A
{
public:
static int a;
static int b;
};
int A::a = 200;
int a = 100;
int A::b = a;
int main(int argc, char* argv[])
{
std::cout << A::b << std::endl;
return 0;
}
输出是 200。那么,谁能告诉我为什么?
【问题讨论】:
-
我不是语言专家,但我最好的猜测是,只要你在作业语句中写下
A::b,你就将范围限定为A类和a那里.要访问全局a,它应该类似于int A::b = ::a;。 -
@AmirRasulov:嗯,到目前为止,有 11 人(包括我)认为这个问题表明了研究努力、有用并且很清楚。
-
@AmirRasulov - 这是一个问答网站。 Q 属于这里的门槛是它的客观质量(就像 Bathsheba 指出的那样),而不是答案对你或我来说听起来多么简单。
-
@AmirRasulov 您可以对本网站上的每个问题使用该论点...
-
@AmirRasulov (0) 这是话题。 (1) 很简单 ⇒ 很多人都明白。 (因此,不幸的是,如果它在一个晦涩的话题中,那么无论它研究得多么好,它都会得到更少的支持)(2)它在 HNQ 上。
标签: c++ scope language-lawyer