[英]What happens when setter-method arguments are references in 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)
,它實際上是一個可以接受2個自變量的函數,其中一個自變量是秘密自變量( this
指針),另一個是int a
。
那么,如果我們嚴格希望C ++中的成員函數完全沒有參數(例如在中斷服務例程中),該怎么辦?
請告訴我我是否錯了或者我是否缺少某些概念。
您可能是說像這樣的靜態函數;
class Object {
public:
static void function() {}
};
您想要的是一個類函數,也就是一個靜態成員函數 。
它將沒有隱式this
指針。
在C ++中,可以使用static
關鍵字聲明一個:
class foo
{
public:
static void bar();
};
void foo::bar()
{
this; // error
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.