[英]Method signature C++
無法理解C ++中的方法簽名。 尋找第二意見。
readPage(File* file, const PageId pageNo, Page*& page) {}
上面可以重寫如下嗎?
readPage(File *file, const PageId pageNo, Page *&page) {}
那么,* file是要傳入的指針,而*&page是要轉換為指針的東西的地址嗎? 我對*&
的組合感到困惑
file
是指向File
的指針,這意味着對其指向的內容進行任何更改,例如
file->doSomething(); // the caller will see this change
會在調用方看到,但是如果覆蓋指針,不僅調用者不會看到指針的新值,而且此后對文件的任何更改也不會被觀察到,因為它是一個現在指向另一個File
的指針,因為指針本身是通過值傳遞的。
file = new File(); // the caller will not see this change
file->doSomething(); // neither will it see this one
現在, page
是對指向Page
的指針的引用。 換句話說,它的行為就像一個指針,因此
page->doSomething(); // the caller will see this change
仍然被呼叫者觀察到。 但是現在,如果您覆蓋指針,則調用者的指針也將被更改,因此所有連續的更改也將被看到:
page = new Page(); // caller also sees this change
page->doSomething(); // and this too
這是因為指針本身是通過引用傳遞的,因此調用者可以觀察到指針本身的任何更改。
(是的,放置空間的方式無關緊要,因此您提供的兩種方式是相同的)
Page *&是指向頁面的指針
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.