将非成员函数与头文件中的成员函数区分开

时间:2018-10-30 09:21:16

标签: c++ header-files

  

属于类接口的非成员函数应在与类本身相同的标头中声明。

上面的引号来自C ++ Primer 5th ed。我想知道是否有最佳实践来区分头文件中的非成员函数和成员函数?还是根本没有必要?

或者这样说: 作为类的设计者,是否有必要在头文件中告诉用户哪个函数只是接口的一部分,而哪个是成员函数?

1 个答案:

答案 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::

您通常可以将标头分成几部分,并为组指定标题,但是区别从语法上显而易见