2011-06-09 80 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是 - 它可以是一个命名空间类。