为什么c++拷贝构造函数一定是传引用?为什么不能是传指针的方式?
ringa_lee
ringa_lee 2017-04-17 13:45:32
0
3
912

值传递会造成死循环。但传指针为什么不行?指针不是是传地址吗,为什么不能用指针?有个博客说传指针也是传值,请问究竟是为什么

ringa_lee
ringa_lee

ringa_lee

全部回覆(3)
黄舟

沒別的原因,因為用指針傳遞的話,那寫法就太難看了。
指標傳值是相對於實參和形參的傳遞而言,傳遞的都是位址的值。

#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;
}
伊谢尔伦

傳指標確實不會造成死迴圈的問題,但是你得自己實作編譯器讓它知道發生拷貝運算的時候去呼叫你寫的傳指標那個函式。
指標本身就是一個變量,只不過它的值是另一個變數的位址而已,所以說傳指標也是一個值傳遞。

小葫芦

建議參考深拷貝和淺拷貝的區別

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板