方法签名C ++

时间:2015-11-13 05:27:17

标签: c++ pointers methods operators signature

无法理解C ++中的方法签名。寻找第二意见。

readPage(File* file, const PageId pageNo, Page*& page) {}

以上可以重写如下?

readPage(File *file, const PageId pageNo, Page *&page) {}

那么,* file是传入的指针,而*& page是某个地址,然后转换为指针?我对*&

的组合感到困惑

2 个答案:

答案 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)

页面*&安培;是指向页面

的指针