c++ 对象调用不带参数的成员函数时会发生什么

What happens when a member function with no arguments is called by an object in c++

假设我们有一个 class X 的成员函数,它是 X f(),returns 是 class X 的一个对象并且不带参数。

所以如果它被class X的对象调用,就说X obj是对象。

因此,如果我们调用 obj.f(),那么根据 C++ 规则,一个秘密参数将传递给函数 f(),即包含地址的对象的 this 指针调用 f().

的对象

所以我的困惑是它是如何由 C++ 管理的,因为这意味着我们永远不能在 C++ 中拥有一个完全没有参数的成员函数,因为每次都会传递一个秘密参数。

对于一个参数为func(int a)的函数,它实际上是一个可以接受2个参数的函数,其中一个参数是秘密参数(this指针),另一个是int a.

那么,如果我们严格要求 C++ 中的成员函数完全没有参数(例如在中断服务例程的情况下),我们该怎么办?

如果我错了或者我遗漏了一些概念,请告诉我。

你的意思可能是像这样的静态函数;

class Object {
public:
    static void function() {}
};

你要的是class function, aka a static member function.

它将没有隐式 this 指针。

在 C++ 中,您可以使用 static 关键字声明一个:

class foo
{
public:
    static void bar();
};

void foo::bar()
{
    this; // error
}