【发布时间】:2011-04-08 17:09:45
【问题描述】:
我见过人们在类中为成员变量使用尾随下划线,例如在著名的 C++ FAQ Lite 中。
我认为它的目的不是将变量标记为成员,这就是“m_”的用途。它的实际目的是使访问器方法可以像字段一样命名,如下所示:
class Foo {
public:
bar the_bar() { return the_bar_; }
private:
bar the_bar_;
}
让访问器省略“get_”部分在 STL 和 boost 中很常见,我正在尝试开发一种尽可能接近这些的编码风格,但我无法真正看到它们使用下划线技巧。我无法在 STL 或 boost 中找到只会返回私有变量的访问器。
我有几个问题希望你能回答:
- 这个约定从何而来?短暂聊天?目标-C?微软?我想知道。
- 我应该对所有私有成员使用尾随下划线,还是仅作为一种解决方法,以防我想将函数命名为变量?
- 您能否指点我使用 STL 或 boost 代码来演示成员变量的尾随下划线?
- 有人知道 Stroustrup 对此问题的看法吗?
- 您能否指出我对该问题的进一步讨论?
【问题讨论】:
-
@Nick D:这怎么可能是重复的,你读了吗?它提出了一个完全不相关的问题,即前导 (!) 下划线在 C++ 中是否合法。
-
@chubsdad:我读过,但他并没有真正提到尾随下划线或访问器。他只是说他不喜欢有很多 get/set 函数的类。
-
对于第 3 点,在 boost/asio/ssl/stream.hpp 中有一个成员 next_layer_ 的示例
-
我还发现了一些在标准中以尾随下划线命名的“仅展示”数据成员:)
标签: c++ naming-conventions member