如何在.h文件和cpp文件中声明和定义非成员函数? 我不太理解C++中的“非成员函数”的概念。如何在.h文件和cpp文件中声明和定义非成员函数。既然main.cpp中的非成员函数没有在类中声明,那么如何在main.cpp中调用该非成员函数呢

如何在.h文件和cpp文件中声明和定义非成员函数? 我不太理解C++中的“非成员函数”的概念。如何在.h文件和cpp文件中声明和定义非成员函数。既然main.cpp中的非成员函数没有在类中声明,那么如何在main.cpp中调用该非成员函数呢,c++,C++,非成员函数或“自由函数”是类之外的函数。 要创建这样的函数,只需在类之外声明它 h .cpp 您可以看到,我对成员函数和自由函数都使用了相同的函数名,这很好,因为它们位于不同的命名空间中。非成员函数或“自由函数”是一个位于类之外的函数。 要创建这样的函数,只需在类之外声明它 h .cpp 您可以看到,我对成员函数和自由函数使用了相同的函数名,这很好,因为它们位于不同的命名空间中。这里有人是Java程序员……这里有人是Java程序员……“在不同的命名空间中”您指的是范围吗?或者它是相同的。@skr

非成员函数或“自由函数”是类之外的函数。 要创建这样的函数,只需在类之外声明它

h

.cpp

您可以看到,我对成员函数和自由函数都使用了相同的函数名,这很好,因为它们位于不同的命名空间中。

非成员函数或“自由函数”是一个位于类之外的函数。 要创建这样的函数,只需在类之外声明它

h

.cpp


您可以看到,我对成员函数和自由函数使用了相同的函数名,这很好,因为它们位于不同的命名空间中。

这里有人是Java程序员……这里有人是Java程序员……“在不同的命名空间中”您指的是范围吗?或者它是相同的。@skrrt-人们非正式地将它称为两者之一,因为类的定义隐式地创建了一个与该类同名的名称空间。另一个在技术上比这两个词都正确的术语是“上下文”,我认为这是一个语义问题。事实上,类有自己的名称空间。“在不同的名称空间中”是指范围吗?或者它是相同的。@skrrt-人们非正式地将它称为两者之一,因为类的定义隐式地创建了一个与该类同名的名称空间。另一个在技术上比这两个词都正确的术语是“上下文”,我认为这是一个语义问题。事实上,类有自己的名称空间。
Class C
{
     int func1(){}; //member function declared and defined in header
     int func2();   //member function declared in header
     ...
}

int func(){}; //free-function declared and defined in header file
int func2();  //free-function declared in header file
int C::func2(){} //definition of member function
int func2(){}     //definition of free-function
int func3(){}     //free-function that is declared and defined in the source file. can only be used within this file