2014-01-05 52 views
-3

我想了解C++。任何人都可以解釋這段代碼是幹什麼的,我知道它是Java中的一種類型的setter和getter,但我不確定。使用指針和strcpy獲取值的C++類

Comm::Comm(const char* id) 
{ 
strcpy(this->id, id); 
} 


char* Comm::getId() 
{ 
    return id; 
} 
+5

普通的錯誤代碼(如果你的例子顯示全部) –

+0

這不是一個setter它是一個構造函數 – prajmus

+0

我強烈建議你去拿一些能教會你的C++理由的書。我必須說,「通過遊戲編程開始C++」並不是一件壞事。 –

回答

7

這段代碼做了什麼?

它灼傷了兒童的眼睛。

這裏的假設是類Comm有一個char*char[N]類型的成員變量。沒有「setter」本身,但Comm的構造函數嘗試將其輸入複製到該成員變量。 getId函數是這個成員變量的getter。

根據代碼的其餘部分,這可能是完全有缺陷,由於缺乏內存分配,缺乏記憶去分配的,以及缺乏拷貝語義。在最佳該成員是一個數組,然後在strcpy調用中缺少範圍檢查是一個嚴重的安全風險。

該類使用std::string重新設計會更好。

我會不是鼓勵你從這段代碼學習。

相反,從a good book學習。

+1

這個答案也沒用, –

+0

@DieterLücking:感謝您的成熟和富有成效的貢獻。 –

+1

感謝您的消息靈通「它燃燒孩子眼中」 –