2011-01-31 187 views

回答

36

在C++中有一个具有一个访问说明符,有路无一整类的概念在Java或C#中。如果一段代码具有一个类的可见性,它可以引用该类的名称并对其进行操作。这就是说,这有几个限制。仅仅因为你可以引用一个类并不意味着你可以实例化它,例如,因为构造函数可能被标记为私有。同样,如果该类是在另一个类的私有或受保护的部分中声明的嵌套类,那么该类将无法在该类及其朋友之外访问。

5

这取决于您是指成员还是继承。你不能有这样的'private class'

class Foo 
{ 
public: 
Foo() {} //public ctr 
protected: 
void Baz() //protected function 
private: 
void Bar() {} //private function 
} 

还是继承:

class Foo : public Bar 
class Foo : protected Bar 
class Foo : private Bar 
22

通过嵌套内另一个类:

class A 
{ 
public: 
    class B {}; 
protected: 
    class C {}; 
private: 
    class D {}; 
}; 
4

您可以通过简单地将它们的接口发布到客户端来实现“私人类”。

我知道没有办法创建“受保护的类”。