属于类接口的非成员函数应在与类本身相同的标头中声明。
上面的引号来自C ++ Primer 5th ed。我想知道是否有最佳实践来区分头文件中的非成员函数和成员函数?还是根本没有必要?
或者这样说: 作为类的设计者,是否有必要在头文件中告诉用户哪个函数只是接口的一部分,而哪个是成员函数?
答案 0 :(得分:2)
语言语法已经在定义和声明方面将成员与非成员区分开。
class Example
{
public:
void member(int); // member, inside the class definition
friend std::istream & operator>>(std::istream &, Example &); // non-member, marked with keyword friend
}
std::ostream & operator<<(std::ostream &, Example &); // non-member, outside the class definition
void Example::member(int param) {} // Example:: qualification on the name
std::istream & operator>>(std::istream & is, Example &) { return is; } // no Example::
std::ostream & operator<<(std::ostream & os, Example &) { return os; } // no Example::
您通常可以将标头分成几部分,并为组指定标题,但是区别从语法上显而易见