iag*_*ito 1 c++ static function member instance
这些天我的代码中发生了一些奇怪的事情.每次我必须构建一个新的成员函数,或者每次我回到之前定义的成员函数时,我认为:
"嘿,无论这个类的哪个实例调用它,这都是完全相同的过程,所以让它变得静止!"
而且我觉得它会减少内存消耗,因为每个实例都不必"携带"一个函数的实现,这是正确的吗?
所以不要像以下那样:
class Foo
{
int _attributes;
double methods(int parameters)
{
// do stuff using..
_attributes;
};
};
Run Code Online (Sandbox Code Playgroud)
我最终得到的结果如下:
class Foo
{
int _attributes;
static double methods(int parameters, Foo* instance)
{
// do stuff using..
instance->_attributes;
};
};
Run Code Online (Sandbox Code Playgroud)
而且我看不到任何不会以这种方式改变的功能.我的所有功能都转向静态,我觉得某处出了点问题.
我错过了什么?再次使用非静态方法有什么用?XD
祝贺您 - 您重新创建了面向对象的C编程.这正是我们在C中使用OOP的方式.事实上,它也是C++如何做到的.它为每个命名函数添加一个参数,this
该函数与其余参数一起推送.你明确地做了同样的事情.
为什么要使用成员函数呢?可读性. myInstance.foo()
比可读性更强myClass::foo(all, my, parameters, myInstance)