比如:
changenum(int* p)
changenum(int*& p)
这两者有什么区别呢?
如果在子函数changenum()中我们改变指针p指向对象的值时,第一种和第二种都可以。但是如果我们要改变指针p指向对象的话,只有第二种可以实现。
因为如果不使用&,那么在函数中会自动调用指针的构造函数,构造一个临时指针,这个指针和传进来的指针指向同一个位置。我们可以通过这个临时指针改变该位置的数值,但是如果把临时指针指向另一个位置时,并不会改变传进来的指针指向的位置。
比如:
changenum(int* p)
changenum(int*& p)
这两者有什么区别呢?
如果在子函数changenum()中我们改变指针p指向对象的值时,第一种和第二种都可以。但是如果我们要改变指针p指向对象的话,只有第二种可以实现。
因为如果不使用&,那么在函数中会自动调用指针的构造函数,构造一个临时指针,这个指针和传进来的指针指向同一个位置。我们可以通过这个临时指针改变该位置的数值,但是如果把临时指针指向另一个位置时,并不会改变传进来的指针指向的位置。