2014-08-29 355 views
-1

在用於KinFu重拍的源代碼,我發現了以下結構:函數是否可以繼承參數?

kfusion::OpenNISource::OpenNISource() : depth_focal_length_VGA (0.f), baseline (0.f), 
shadow_value (0), no_sample_value (0), pixelSize (0.0), max_depth (0) {} 

以下的參數:類kfusion :: OpenNISource內聲明。函數OpenNISource()也在這個類中聲明。由於我是C++的新手,我認爲函數繼承並聲明瞭變量......(?)

所以下面的代碼會將變量(foo,bar)和值(0,1.0f)添加到函數中?

class A 
{ 
    public: 
    fn(); 
    fn (int qux); 

    int foo; 
    float bar; 
}; 


A::fn() : foo(0), bar(1.0f) {} 

如果是這樣,這些變量是否會被添加到fn(int qux)?

+0

只有構造函數可以做到這一點 – sp2danny 2014-08-29 11:16:55

回答

4

由於此功能與類具有相同的名稱,因此它是該類的實例化時自動調用的類的構造函數

冒號後的變量列表是初始化列表,用於將初始值分配給類的成員變量。

你只能用構造函數做到這一點,而不僅僅是任何函數,所以你的代碼將無法工作。你必須調用函數「A」才能做到這一點。

+0

你應該刪除「通過'new'」,我們已經看到了足夠的動態分配濫用:p – Quentin 2014-08-29 11:19:43