【问题标题】:Usage of static keyword in C++C++中静态关键字的使用
【发布时间】:2011-01-24 11:09:29
【问题描述】:

我有一个在 myclass.hpp 中公开静态函数的类

class MyClass {
public:
   static std::string dosome();
};

好吧,在 myclass.cpp 中我应该写什么: 这个:

std::string MyClass::dosome() {
   ...
}

或者这个:

static std::string MyClass::dosome() {
   ...
}

我想我不应该重复 static 关键字...对吗?

【问题讨论】:

  • 不要重复静态关键字,但我很想知道原因
  • @MattSmith:请参阅下面的答案。

标签: c++ static-methods


【解决方案1】:

C++ 编译器不允许这样做:

static std::string MyClass::dosome() {
   ...
}

因为在函数定义中包含 static 意味着完全不同的东西 - static 链接(意味着该函数只能从同一个翻译单元调用)。

在成员函数声明中包含static 就足够了。

【讨论】:

  • 啊,是的,你是对的......就像c......如果它遇到一个静态函数,这意味着它只能从同一个......文件或更好的文件中调用,正如你所指出的出,翻译单位。感谢您详尽的回答。
【解决方案2】:

不要重复static 关键字。这样做会导致错误。

【讨论】:

    【解决方案3】:

    是的。在类定义之外定义函数体时,不应使用 static 关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多