当一个没有参数的成员函数被c++中的一个对象调用时会发生什么

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

本文关键字:一个对象 调用 c++ 什么 成员 一个 参数 函数      更新时间:2023-10-16

假设我们有一个class X的成员函数,它是X f(),它返回一个class X的对象,并且不接受任何参数。

因此,如果它是由class X的对象调用的,那么说X obj就是对象。

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

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

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

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

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

您可能是指这样的静态函数;

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

您想要的是一个类函数,也称为静态成员函数。

它将没有隐含的this指针。

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

class foo
{
public:
    static void bar();
};
void foo::bar()
{
    this; // error
}
相关文章: