最近我的代码中发生了一些奇怪的事情。每次我必须构建一个新的成员函数,或者每次我回到以前定义的成员函数时,我想:
“嘿,无论这个类的哪个实例调用它,这都将是完全相同的过程,所以让我们让它成为静态的!”
而且我还觉得它会减少内存消耗,因为每个实例都不必“携带”该函数的一个实现,对吗?
所以不要有这样的东西:
class Foo
{
int _attributes;
double methods(int parameters)
{
// do stuff using..
_attributes;
};
};
我最终得到的结果是:
class Foo
{
int _attributes;
static double methods(int parameters, Foo* instance)
{
// do stuff using..
instance->_attributes;
};
};
而且我再也看不到任何不会以这种方式转换的函数。 所有 我的函数都变成了静态的,我觉得某处有问题..
我错过了什么?拥有非静态方法又有什么用呢? XD
最佳答案
恭喜您重新创建了 C 面向对象编程。这正是我们在 C 中实现 OOP 的方式。事实上,C++ 也是如此。它向每个名为 this
的函数添加一个参数,该参数与其余参数一起推送。你正在明确地做同样的事情。
为什么要改用成员函数?可读性。 myInstance.foo()
比 myClass::foo(all, my, parameters, myInstance)
关于c++ - 非静态函数 C++ 还剩下什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103864/