在C 中的類別實例上呼叫靜態成員方法
出現了關於在C 中的類別實例上呼叫靜態成員方法的有效性的問題。靜態成員方法通常透過類別名稱調用,但下面的程式碼片段似乎與此約定相矛盾:
class Test { public: static void DoCrash() { std::cout << "TEST IT!" << std::endl; } }; int main() { Test k; k.DoCrash(); }
問題:
答案:
雖然靜態成員方法通常是透過類別名稱呼叫的,但 C 標準允許在類別實例上呼叫它們。這從C 03 標準中的以下部分可以明顯看出:
「類別X 的靜態成員s 可以使用限定ID 表達式X::s 來引用;不必使用該類別引用靜態成員的成員訪問語法(5.2.5)可以使用類別成員存取語法來引用靜態成員,在這種情況下將計算物件表達式。語義。在這種情況下,將對物件表達式進行求值,這可能會在泛型程式設計上下文中帶來好處。範例:
以下程式碼示範了靜態成員方法如何可以與類別名稱和實例語法一起使用:
以上是C 中的類別實例可以呼叫靜態成員方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!