簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM