2011-12-20 250 views
0

C++中是否存在與類方法等價的方法? 我知道在Objective-C中,我們可以在頭部聲明一個函數+ (void)aClassFunction;,我們可以通過[myClass aClassFunction];來調用它。有沒有辦法在C++中做到這一點?C++中的等價類方法

回答

1

是,使用static

class MyClass { 
public: 
    static int classFunc() { return 45; } 
}; 

cout << MyClass::classFunc() << endl; 

你可以看到你通過類名,後跟範圍解析操作,::,後跟函數的名稱來訪問它們。

+0

這是不一樣的。你不能像Objective-C – user102008 2012-05-31 20:48:55

6

static方法是足夠接近(但不是等同的)替代目標C的類方法。區別在於,在C++中,您不能覆蓋靜態方法。

+0

那樣使用在運行時計算出來的類「不同的是,在C++中,你不能重載靜態方法。」你指出的重要通知;) – Geoffroy 2011-12-20 01:59:51

+0

所以你說我可以用靜態函數創建一個類並創建它的一個子類,但無法更改該函數? – 2011-12-20 02:01:44

+0

@ChaseWalden靜態(「類」)函數不會被繼承。 – 2011-12-20 02:14:12

1

是的,使用靜態方法。

void SomeClass::DoSomething() 
{ 
    /* do something */ 
} 

然後調用它像這樣:

SomeClass::DoSomething(); 

static void DoSomething(); 

它在.cpp這樣實現:

在.h文件中這樣聲明一個靜態方法

+0

這是不一樣的。你不能像在Objective-C中那樣使用在運行時計算的類 – user102008 2012-05-31 20:49:16