簡體   English   中英

方法簽名C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM