2011-01-18 3 views
1

コンストラクタをpublicと宣言するのはなぜですか?C++ language oops

+3

これはなぜ閉じられるべきなのか分かりません。非常に簡単で基本的な質問ですが、具体的な答えがあるプログラミングに関連する質問です。 – oezi

+1

oezi/agree。最近のstackoverflowがあまりにも厄介になっています。 –

答えて

1

以下のコード行では、コンストラクタを使用して初期化を行う必要があります。この場合、コンストラクタがprivateの場合、クラススコープの外でどのようにアクセスされるのでしょうか。さらに、インスタンスobjの間にfoo::foo(int num)がデフォルトで呼び出されます。

foo *obj = new foo(5); 
1

他のオブジェクトからオブジェクトを構築することはできません。

+3

必要ありません。プライベートまたは保護されたコンストラクタと、オブジェクトのコピーを返すpublic staticメソッド(またはfriend関数)を持つことができます。 –

2

コンストラクタはオブジェクトの作成方法です。あなたのコンストラクタがパブリックでない場合、クラスの外部から新しいオブジェクトを構築するために使用することはできませんでした。時々、非パブリックコンストラクタは、たとえば、有用であることが

注:今すぐ

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を介して作成することができます。

関連する問題