无法理解C ++中的方法签名。寻找第二意见。
readPage(File* file, const PageId pageNo, Page*& page) {}
以上可以重写如下?
readPage(File *file, const PageId pageNo, Page *&page) {}
那么,* file是传入的指针,而*& page是某个地址,然后转换为指针?我对*&
答案 0 :(得分:0)
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
这是因为指针本身是通过引用传递的,因此调用方可以观察到指针本身的任何更改。
(是的,你放置空格的方式并不重要,所以你提供的两种方式是相同的)
答案 1 :(得分:0)
页面*&安培;是指向页面
的指针