2014-09-29 49 views
-3

我想通過在C++中製作一個簡單的棋盤遊戲來學習類。我有一個名爲「board」的類,它有兩個功能,drawBoard和fillBoard。 當我在主函數中創建對象時,我似乎有兩個選項。使用新命令創建類對象而不是創建類對象有什麼區別?

1)board gameBoard;

2)board * gameboard = new board();

這兩者有什麼區別?使用'new'操作符時,我是否總是需要創建一個指針?我主要試圖瞭解什麼情況下我會使用一個在另一個英寸

此外,當我將它定義爲一個指針,當我調用函數時,總是必須使用「 - >」而不是點?

board.drawBoard();與board-> drawBoard();

這兩者有什麼不同?

+0

我強烈建議google.com和cplusplus.com – Chantola 2014-09-29 22:16:29

+0

谷歌的c + +和動態內存 – jpw 2014-09-29 22:18:09

+1

可能的重複:[RAII和智能指針在C + +](http://stackoverflow.com/questions/395123/raii-and-smart-pointers-in-c/395158#395158) – 2014-09-29 22:18:11

回答

0

1)board gameBoard;

這一個是上堆疊產生

2)板*遊戲鍵盤=新板();

這個是在堆上創建的。

使用「新」

是什麼時候我總是要創建一個指針。

做我總是要使用 「 - >」,而不是點調用函數時

- >運營商只是一個快捷方式(*板).drawBoard()。 指針是保存其他變量地址的變量,如果你想訪問指針指向你使用星號的變量。圓括號是因爲運算符的優先級

+0

你可以期待OP知道堆棧和堆是什麼? – 2014-09-29 22:30:54

+1

謝謝你的回覆。你指出了我的正確方向,以瞭解背景中實際發生的事情。我閱讀堆棧和堆,現在有一個無關的問題:因爲你不斷釋放堆中的內存,它會變得非常分散嗎?碎片化會使內存降低到與硬盤驅動器相同的程度嗎?如果是這樣,是否有定期整理堆的東西? – user1125316 2014-09-29 22:55:22

+0

閱讀此:http://www.design-reuse.com/articles/25090/dynamic-memory-allocation-fragmentation-c.html http://stackoverflow.com/questions/1592804/how-doi-i-解決方法 - 堆碎片在交流服務器程序 – atlanteh 2014-09-29 23:00:12