【问题标题】:How is it that a static method in a class can be run without an object (as we know that a class does not have any memory allocated to it) in c++? [duplicate]在 c++ 中,一个类中的静态方法如何在没有对象的情况下运行(我们知道一个类没有分配任何内存)? [复制]
【发布时间】:2021-08-11 14:05:35
【问题描述】:

所以使用下面的 static 关键字我们可以调用 MyMethod 而不创建类 MyClass 的对象,我的问题是它怎么可能因为一个类没有分配内存什么时候编译代码?

static int MyMethod( int * a, int * b );

int one = 1;
int two = 2;

MyClass::MyMethod( &two, &one );

【问题讨论】:

  • 函数和类的变量不在同一个地方。
  • 当某个对象不存在时,非成员函数如何工作?很简单:它不关心那个对象。静态成员也不行。
  • onetwo 在编译时也没有分配任何内存。

标签: c++ object oop static


【解决方案1】:

看来你有点误会了。每次创建类的方法时都没有分配内存。类方法通常与其类分开。我想您可以将“分配给成员函数的内存”称为操作码占用的空间。但是,是的,这与对象是分开的。非静态成员函数必须由类的实例调用,这只是语言要求。静态函数故意不关心这一点,即使它没有被对象调用也可以调用。

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2022-06-18
    • 2011-02-02
    • 2021-08-28
    相关资源
    最近更新 更多