dan*_*jar 3 c++ methods inheritance static
我想提供静态帮助函数来处理类的数据类型.我考虑将它们包含在课堂上.它们是为每个新的类实例实例化还是仅实例化一次?
函数不是"实例化"(除非它们是函数模板).
类被实例化,类的实例是对象.每个对象在内存中占用空间,但函数只是程序,编译器一次性生成的代码片段,并且每次实例化新对象时都不会分配内存中的空间.
函数可以隐式地处理类的实例(如果函数是成员函数),但这只是通过将隐式指针传递给它们所处理的对象来完成的.因此,即使在成员函数的情况下,无论是它们static
还是非成员函数,都static
没有代码片段1的扩散.
如果你想询问是否只为static
函数生成了一段代码,而不是几段独立的代码,那么答案是" 是 "; 但是,对于成员函数,答案是相同的.
1实际上,virtual
成员函数确实需要为具有至少一个成员virtual
函数的类的每个实例存储一个附加指针(该指针指向所谓的vtable).但是,static
功能不能virtual
,因此这不适用于您在问题中考虑的情况.