值传递会造成死循环。但传指针为什么不行?指针不是是传地址吗,为什么不能用指针?有个博客说传指针也是传值,请问究竟是为什么
ringa_lee
沒別的原因,因為用指針傳遞的話,那寫法就太難看了。 指標傳值是相對於實參和形參的傳遞而言,傳遞的都是位址的值。
#include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "constructor called"<<endl; } MyClass(const MyClass &v) { cout << "copy constructor called" << endl; } }; int main() { MyClass A; MyClass B = A; //这里调用的是拷贝构造函数,写法目前看起来是自然的,用指针写的话,怎么表达这个写法? return 0; }
傳指標確實不會造成死迴圈的問題,但是你得自己實作編譯器讓它知道發生拷貝運算的時候去呼叫你寫的傳指標那個函式。 指標本身就是一個變量,只不過它的值是另一個變數的位址而已,所以說傳指標也是一個值傳遞。
建議參考深拷貝和淺拷貝的區別
沒別的原因,因為用指針傳遞的話,那寫法就太難看了。
指標傳值是相對於實參和形參的傳遞而言,傳遞的都是位址的值。
傳指標確實不會造成死迴圈的問題,但是你得自己實作編譯器讓它知道發生拷貝運算的時候去呼叫你寫的傳指標那個函式。
指標本身就是一個變量,只不過它的值是另一個變數的位址而已,所以說傳指標也是一個值傳遞。
建議參考深拷貝和淺拷貝的區別