0

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

所以如果它被 的一个对象调用class X,sayX obj就是这个对象。

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

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

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

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

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

4

2 回答 2

1

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

class Object {
public:
    static void function() {}
};
于 2015-03-05T08:02:53.293 回答
0

你想要的是一个类函数,也就是一个静态成员函数

它将没有隐式this指针。

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

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

void foo::bar()
{
    this; // error
}
于 2015-03-05T08:10:52.040 回答