搜尋

首頁  >  問答  >  主體

为什么c++拷贝构造函数一定是传引用?为什么不能是传指针的方式?

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

ringa_leeringa_lee2883 天前955

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-04-17 13:47:32

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

    #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;
    }

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:47:32

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 13:47:32

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

    回覆
    0
  • 取消回覆