2011-01-31 4 views
29

C++의 클래스를 public, private 또는 protected으로 어떻게 선언 할 수 있습니까?C++ 클래스 (public, private 및 protected)

+1

에서와 같이 누군가가 수업을 사용하지 못하도록 하시겠습니까? 클래스는 서브 클래스 화 될 수 있습니다 : 즉, class A {private : class B {}; }; –

+0

이것은 당신에게 유용 할 수 있습니다 : http://www.linuxquestions.org/questions/programming-9/public-private-protected-c-215399/#post1098220 – KyleWpppd

+0

왜이 질문에 대해 가까운 투표가 있습니까? 이것은 묻기에 매우 합리적인 질문 인 것 같습니다. – templatetypedef

답변

36

++ 액세스 지정자에게이 방식을 가진 전체 클래스의 개념이 없다 자바 또는 C#. 코드 조각에 클래스에 대한 가시성이 있으면 해당 클래스의 이름을 참조하고 조작 할 수 있습니다. 즉, 여기에는 몇 가지 제한이 있습니다. 클래스를 참조 할 수 있다고해서 인스턴스를 생성 할 수있는 것은 아닙니다. 예를 들어 생성자가 private로 표시 될 수 있습니다. 마찬가지로 클래스가 다른 클래스의 private 또는 protected 섹션에서 선언 된 중첩 클래스 인 경우 클래스는 해당 클래스 및 해당 친구 외부에서 액세스 할 수 없습니다.

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

안에 또 다른 하나 개의 클래스를 중첩함으로써 :

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

단순히 인터페이스를 클라이언트에 게시하지 않고 "개인 클래스"를 구현할 수 있습니다.

나는 "보호 된 클래스"를 만들 수 없다는 것을 알고 있습니다.