当一个没有参数的成员函数被c++中的一个对象调用时会发生什么
What happens when a member function with no arguments is called by an object in c++
假设我们有一个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
}
相关文章:
- 检查哪个对象调用了另一个对象的对象方法
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 调用对象类方法,该方法在另一个对象类中的向量中
- 为什么在 C++ 中,当对象包含在另一个对象中时,复制构造函数被调用两次
- 从另一个模板对象调用模板方法时出现奇怪的编译行为
- 使用SWIG包装C 类,该类调用另一个对象成员函数
- 从另一个对象调用成员函数时出现问题
- 将一个对象的函数设置为由arduino库中的另一个对象调用
- c++oop初学者-在一个函数调用中返回向量中每个创建对象的输出和
- 尝试将调用对象与另一个对象进行比较时出现分段错误
- 当一个没有参数的成员函数被c++中的一个对象调用时会发生什么
- 为什么在 const 对象上调用 std::move 在传递给另一个对象时会调用复制构造函数
- 使用“std::function”从另一个对象调用对象的成员
- 从另一个对象调用一个对象的函数时未定义的引用
- 你能同时对一个对象调用几个方法吗
- 类draw()方法在直接调用时有效,但在被另一个对象调用时崩溃