好的,所以我已經深入到C++了,因爲我遲到了。指針終於開始有意義,至於何時使用它們,如何正確實現它們等等。C++:指針語法之間的區別
但是,我仍然有一個需要回答的指針的基本用法有一個小問題。我會直接跳到代碼:
下面的類A
和功能foo(A* bar)
...
class A
{}
void foo(A* bar)
{}
...什麼是以下調用foo
之間的區別?
A* a;
A b;
foo(a);
foo(&b);
他們都編譯罰款,據我記得我沒有跟他們任何問題。
我認爲A b;
被實例化在那裏,而與new
創建A* a;
需求(因爲它沒有實際創建的對象,它只是舉行了4字節長的參考電位A
對象)。
我可以,如果我正確地思考這個問題,請a = b;
(編輯做出a = &b
),然後順利通過a
到foo
。但是,如果我不做a = &b
而foo
會嘗試讀取a
指向的(不存在的)對象,則會導致運行時錯誤。
此外,如果以上是正確的,那麼假設我可以成功地撥打foo(&b);
就好了。
我正確嗎?
謝謝!
@SethCarnegie:是的。糾正。感謝您指出了這一點。 – 2012-01-30 03:01:06
智能指針的良好鏈接。我從來沒有聽說過他們,但他們似乎非常有用。我得看看他們! – Qix 2012-01-30 03:17:53
@ Di-0xide:你應該。 RAII是C++最強大的功能之一。 – 2012-01-30 03:32:04