C++中双冒号的完整名称是什么?

6

如果我有一个类:

class A{
public:
    A();
    void print();
private:
    int value;
};

A::A() {value = 0;}
void A::print() {cout << value << endl;}

最后两行中的 :: 符号的完整名称是什么?

3个回答

15

在最后两行中,:: 符号的完整名称是什么?

它的完整名称是“作用域解析运算符”。

有人知道答案吗?

是的。

这是你被问过的最奇怪的问题吗?

不是。


2
我非常喜欢这个答案。 - mathematician1975
2
不幸的是,而且时间极其不巧,在你打字的时候,我已经把多余的副本从问题中删除了! - razlebe
1
如果您能把它放回去,那就太好了。 - mathematician1975
3
以下是如何优雅地回答问题。 - Marlon
1
我以为这是关于可以替代“::”的东西,比如A.this->A()之类的。无论如何,感谢您的回答。 - Max

13

它被称为作用域解析运算符。


7

这被称为作用域解析运算符


你想知道你可以写什么代替::吗?好吧,没有一种替代方法总是有效的。对于你的例子,可以在类的主体中定义这些成员函数,这将是定义类的内联样式:

class A{
  int value;
 public:
  A() {
    value = 0;
  }
  void print() {
    cout << value << endl;
  }
};

那样,显然你无法将定义放在另一个文件中,因此无法单独编译它们。
其他情况下,当使用::来解析命名空间而不是类时,可以用重新打开该命名空间或使用using namespace将其引入作用域代替。

#define SCOPE ::怎么样? ;) - fredoverflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接