为什么在 C 类的成员变量上使用前缀

新手上路,请多包涵

许多 C++ 代码使用语法约定来标记成员变量。常见的例子包括

  • m_ memberName 用于公共成员(完全使用公共成员的地方)
  • _ 私有成员或所有成员的 memberName

其他人试图在使用成员变量时强制使用 this-> _成员_。

根据我的经验,大多数大型代码库都无法始终如一地应用这些规则。

在其他语言中,这些约定远没有那么普遍。我只是偶尔在 Java 或 C# 代码中看到它。我想我从未在 Ruby 或 Python 代码中看到过它。因此,更现代的语言似乎有一种趋势,即不对成员变量使用特殊标记。

这个约定在今天的 C++ 中是否仍然有用,或者它只是一个不合时宜的东西。特别是因为它在库中的使用如此不一致。其他语言不是表明没有成员前缀也可以吗?

原文由 VoidPointer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 736
2 个回答

您必须小心使用前导下划线。保留单词中大写字母前的前导下划线。例如:

_Foo

_L

都是保留字,而

_foo

_l

不是。在其他情况下,不允许在小写字母之前使用前导下划线。在我的具体情况下,我发现 _L 恰好被 Visual C++ 2005 保留,并且冲突产生了一些意想不到的结果。

我对标记局部变量的用处持怀疑态度。

这是一个关于保留哪些标识符的链接: 关于在 C++ 标识符中使用下划线的规则是什么?

原文由 Juan 发布,翻译遵循 CC BY-SA 3.0 许可协议

带有 $ 符号的前缀,或带有 _ 的后缀

class Demo {
public:
    Demo() {
        $name = "Harry Porter";
        age_ = 18;
    }
protected:
    std::string $name;
    int age_;
};

原文由 Sunding Wei 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题