簡體   English   中英

靜態函數與 const 函數

[英]Static functions vs const functions

我在看一個成員函數

int funct(int x) const; 

我想知道是否

static int funct(int x); 

會更好。

如果成員函數不使用任何成員變量,它應該是靜態的嗎? 有什么事情會阻止這一點嗎?

假設這是 C++,聲明為 const 的函數表示它不打算更改調用它的實例上的數據成員,即 this 指針。 既然有辦法規避這一點,那就不是保證,只是一種聲明。

靜態函數不對特定實例進行操作,因此不采用“this”指針。 因此,它是一種非常幼稚的“const”。

如果您的方法不需要綁定到特定實例,則將其設為靜態是有意義的。

但是,如果您的方法是多態的——也就是說,您根據調用它的對象的實例提供不同的實現,則它不能是靜態的,因為它確實依賴於特定的實例。

如果成員函數不使用任何成員變量,那么通常值得提出以下問題:
“這首先需要是成員函數嗎?”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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