2011-01-18 2 views
1

생성자를 public으로 선언하는 이유는 무엇입니까?C++ language oops

+3

이것이 왜 닫혀 야하는지 알 수 없습니다. 매우 간단하고 기본적인 질문이지만 명확히 특정 답변이있는 프로그래밍과 관련된 질문입니다. – oezi

+1

oezi/agree. 요즘 stackoverflow 너무 까다롭게지고 .. –

답변

1

아래 코드 줄에서 초기화는 생성자를 통해 이루어져야합니다. 이 경우 생성자가 private 인 경우 클래스 범위 외부에서 어떻게 액세스 할 것입니까? 또한 foo::foo(int num)은 인스턴스화가 obj 인 동안 기본적으로 호출됩니다.

foo *obj = new foo(5); 
1

다른 개체에서 개체를 구성 할 수 없습니다.

+3

필요하지 않습니다. 개인 또는 보호 된 생성자 및 개체의 복사본을 반환하는 public static 메서드 (또는 friend 함수)를 가질 수 있습니다. –

2

생성자는 객체를 만드는 방법입니다. 생성자가 공개되지 않은 경우 클래스 외부에서 새 객체를 생성하는 데 사용할 수 없습니다. 때때로 비 public 생성자 예를 들어, 유용

참고 :

class foo 
{ 
public: 
    static foo make_foo(int i) 
    { 
     // only functions of foo can use that constructor, 
     // because it's private; return a foo 
     return foo(i); 
    } 

private: 
    foo(int i) { /* construct */ } 
}; 

은 이제 foo은 어떤 이유로 든 기능 make_foo를 통해 생성 할 수 있습니다.