【发布时间】:2017-05-11 13:02:56
【问题描述】:
C++ Core Guidelines section C.4 建议“仅当函数需要直接访问类的表示时才将其设为成员”,使用以下示例:
class Date {
// ... relatively small interface ...
};
// helper functions:
Date next_weekday(Date);
bool operator==(Date, Date);
我不明白这里的推理。在我看来,这将是一个更好的选择:
class Date {
// ... relatively small interface ...
Date next_weekday(Date const&) const;
bool operator==(Date const&) const;
};
这种推理有什么好处?
【问题讨论】:
-
为什么您认为成员函数会是更好的选择? :)
-
我同意你的观点,但前提是制作“辅助功能”
static。 -
我希望你知道“不要为你不使用的东西付费”的 C++ 代码哲学。可以说,打破封装是要付出代价的。所以这个指南只是将同样的理念应用于打破封装的代价。
-
尽管这是一个骗局,但我不同意反对意见。从核心指南到 Scott Meyer 所写的内容并非易事。另外,另一个问题知道这是关于封装的。最后,CG指定独立,另一篇文章是关于非会员的。简而言之,对于大多数人来说,找到副本并非易事。
标签: c++ class-method