什么是非静态函数c ++?

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

Gab*_*han 7

祝贺您 - 您重新创建了面向对象的C编程.这正是我们在C中使用OOP的方式.事实上,它也是C++如何做到的.它为每个命名函数添加一个参数,this该函数与其余参数一起推送.你明确地做了同样的事情.

为什么要使用成员函数呢?可读性. myInstance.foo()比可读性更强myClass::foo(all, my, parameters, myInstance)