2011-06-09 79 views
2

對不起,如果這個問題很愚蠢。我來自java背景。one C++ syntax question

在下面的代碼中,base_list是SqlAloc的父類,但公共內存的含義是什麼?

class base_list :public memory::SqlAlloc 
{ 
protected: 
    list_node *first,**last; 
    uint32_t elements; 
public: 
}; 
+0

請刪除**,我花了5分鐘試圖瞭解他們是什麼。 – slaphappy 2011-06-09 13:18:05

+0

刪除,我想突出顯示它,但看起來不起作用 – 2011-06-09 13:29:25

回答

4
Memory

可能是一個命名空間(有點像一個外部類),其中SqlAlloc定義。

C++同時具有publicprivate繼承(實際上也是protected)。public繼承就像Java繼承;在private繼承中,儘管派生類之外的代碼並不知道基類。這是繼承實現而不繼承類型的一種方式。在Java中,你只能做兩個。

+0

命名空間不是「像」外部類「,遠離它,它的語法糖,而不是語言的結構。忘了'虛擬'繼承) – rubenvb 2011-06-09 13:13:28

+0

如果在Java中我定義了一個空的類,除靜態內部類B,C和D外,A和C++名稱空間之間沒有*有意義的區別,從B,C,和D.類名B,C和D在A範圍內,就是這樣,你可以想出一些小例子,比較下來,但這幾乎不會損害我的*類似於*。 – 2011-06-09 13:21:40

+0

I總是認爲C++名稱空間有點像Java包 - 但我想這只是我... – Nim 2011-06-09 13:25:47

1

memory是一個名稱空間或一個類(結構)。 public表示在SqlAlloc類(結構)中聲明爲public和protected的所有成員函數和成員數據將在公共和受保護的base_list中可見。

0

base_list公開SqlAlloc推導既不是一個命名空間類,或嵌套類,這取決於什麼memory是 - 它可以是一個命名空間類。