2

我是C++新手,這是我第一次使用它的類,我想知道如何調用構造函數?我已經閱讀了一些關於C++類的文檔,這就是我提出的。構造函數調用私有方法來設置服務器。C++構造函數不被稱爲

+0

那麼是什麼讓你說構造函數沒有被調用? – cnicutar 2012-08-15 03:46:52

+0

LoginServer objLoginServer();錯字? – 2012-08-15 03:47:23

+0

@ su-幾乎肯定是一種類型。你應該做出答案。 – 2012-08-15 03:48:39

回答

0

http://www.cplusplus.com/doc/tutorial/classes/

讀這是個好的開始。祝你好運。

重要提示:請注意如何,如果我們宣佈一個新的對象,我們要使用它的默認構造函數(一個不帶參數),我們不包括括號():

CRectangle rectb; // right 
CRectangle rectb(); // wrong! 
+0

[好書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)是一個更好的建議。該網站有[問題](http://jcatki.no-ip.org/fncpp/cplusplus.com),這可能是downvote的原因。 – chris 2012-08-15 03:55:24

+0

我發現該網站的內容編寫得很好,我必須說我不明白這個降價。答案是正確的,鏈接頁面的內容是相關的。所以我相信有一些人只是隨意地(或者作爲一項運動)幻想打倒downvote按鈕。或者,他們可能會在鏈接頁面某處出現拼寫錯誤等細節,並大喊「所有這些都是不正確的」。 – 2014-04-14 21:02:55

2

的構造應該叫每次你實例化一個對象,例如行LoginServer objLoginServer;(提示:嘗試沒有括號)或LoginServer *objLoginServer = new LoginServer();,當然記得在完成它時調用delete objLoginServer;

+1

@jenny也可以考慮三條規則:如果你明確地創建了構造函數,還要顯式地創建析構函數和複製構造函數。 – MartyE 2012-08-15 04:11:07

5

由於在C++中解析的規則:

LoginServer objLoginServer(); 

不聲明LoginServer類型的對象。實際上是聲明一個函數,它不帶參數並按值返回LoginServer對象。

相反,你要說:

LoginServer objLoginServer; 
+1

谷歌「最煩惱的解析」瞭解更多信息。 – cHao 2012-08-15 03:51:35

2

嘗試去掉括號:

LoginServer objLoginServer; 

如果你是好奇這是怎麼回事,請搜索「最棘手的解析」。

0

有兩種調用構造函數的多種方式,但我猜你的具體問題是,你的括號括起來,調用默認的構造函數時,你需要忽略它們:LoginServer objLoginServer;

這樣的問題發生,因爲編譯器不能在聲明函數原型和調用默認構造函數之間進行distingush。看看A B(),在上下文之外,它可能會使用默認構造函數創建類型爲A的名稱B的對象,或者函數B返回類型爲A的實例。