Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

在C++裡,constructor宣告成private??

0 views
Skip to first unread message

小維

unread,
Jan 26, 2003, 1:09:01 AM1/26/03
to
您好,
請教一下,在C++裡,如果把constructor宣告成private,這麼做有特別的用意嗎?因為這樣在main()裡就不能用它來建立物件了,謝謝您的回答。

--
好康訊息!
Openfind 提供免費撥接電話:40508888
帳號:openfind 密碼:openfind
--
http://bbs.openfind.com.tw
※來源:61.217.*


好暈.................

unread,
Jan 26, 2003, 10:33:34 AM1/26/03
to
※ 引述《wien...@bbs.openfind.com.tw (小維)》之銘言:
> 您好,
> 請教一下,在C++裡,如果把constructor宣告成private,這麼做有特別的用意嗎?因為
這樣在main()裡就不能用它來建立物件了,謝謝您的回答�

constructor宣告成private, 在main , or functions or 其他class的member function
裡都不能"以new的方式直接建立此物件"

"but 可以呼叫此class的static function 來間接建立物件"
(此static function因為是在此class的scope裡, 所以不受private constructor
之影響)

singleton pattern就是用這樣的做法來做到控制一個singleton class只會
存在一個instance

for example :

class SingletonClass
{
public:
static SingletonClass* GetInstance()
{
if (!_instance) _instance= new SingletonClass;
return _instance;
}
private:
SingletonClass ();
static SingletonClass* _instance;
};

有了上面的private constructor後, 我們就可以避免在其它funtion裡new了此物件
而是統一透過SingletonClass的static function -->GetInstance來取得此物件,
GetInstance會先判斷是否已建立此物件,如果已經建立了, 就直接傳回先前建立
之物件, 如果尚未建立, 就先建立物件後再回傳. 如此就可達成此SingletonClass
最多只會存在一個instance的機制

--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: 218-163-56-43.HINET-IP.hinet.net

強小尼

unread,
Jan 29, 2003, 2:22:04 PM1/29/03
to
※ 引述《Wisem...@bbs.cs.nthu.edu.tw (好暈.................)》之銘言:
: ※ 引述《wien...@bbs.openfind.com.tw (小維)》之銘言:

: > 您好,
: > 請教一下,在C++裡,如果把constructor宣告成private,這麼做有特別的用意嗎?因為
: 這樣在main()裡就不能用它來建立物件了,謝謝您的回答�: constructor宣告成private, 在main , or functions or 其他class的member function
: 裡都不能"以new的方式直接建立此物件"

那麼如果我在function理想要使用其他class的member function(public的)
是不是只要在function裡 多加一行
[1;32m new FunctionName; [m
這樣就可以了呢?
(p.s.呼叫FunctionName的function 是一個C function不是在constructor裡)
因為我在compile的時候 一直出現這樣的錯誤
[1;32m error C2143: syntax error : missing ';' before '.' [m

謝謝回答

--
[30;42m▄ [32;40m▄ [30;42m▃▇ [1;37;40m /\\ [33m喵嗚 ~ [37m■ ■ [m [30mby kioku [m [1;37m ■ ■ ■ ■ [;m
[42;30m▃ [33;43m [30;42m ▄ [32;40m▄ [1;37m ( ") [33m小毛肚子餓 ~ [37m■ █▔◥ ◣ ◢ ◢█◣ ■ ■ ■ [;m
[33m ▌ [30;42m▆ [1;37;40m ~( ) [36m<)#< [;m■ ■ ■ █ █▔█ ◢◤ 風信小毛 ■ ■
[31m▂ [m [31;43m�[m [31md▅▇███▇▇▆▃▁ [1;30m■ ■ ■ █▁◢‧█ █‧◢█◣ cm2.twbbs.org [;m
[1;35m※ Origin: [;m [1;36m風信小毛《 cm2.twbbs.org 》 [33m◎ From: [31m aludra.usc.edu [;m


0 new messages