如何在c ++中创建Copy构造函数

时间:2017-04-06 02:39:42

标签: c++

我正在尝试为this.http.get('https://us-central1-rosebud-9b0ed.cloudfunctions.net/getUserByEmail', { search: "user@email.com" }).subscribe(data => { console.log('data', data); }) 类编写一个复制构造函数,以便它打印Shape名称的地址。

这是我的代码:

s2

2 个答案:

答案 0 :(得分:0)

当您为name创建字符串指针成员s1时,您只是在调用复制构造函数时将其复制到s2,这只是预期的它显示与s1相同的地址的行为 - 它只是复制指针。

如果你想为每个形状提供一个唯一的名称,只需创建一个静态方法/自由函数来创建一个新名称,并在构造函数和复制构造函数中调用它,为每个新实例赋予一个唯一的名称。

对于它的价值,在这里使用new运算符并不常见(你来自Java背景吗?) - 你可能只想使用常规std::string,在这种情况下,你不必自己进行内存管理(你的代码现在基本上都有内存泄漏,因为你不能在任何地方调用delete来释放通过{{1分配的内存}})。

PS:刚刚看到你刚刚编辑并更改了你的代码,而我正在输入我的答案......我不会记录这些变化(请原谅),但我在这里留下我的答案#39;值得。

答案 1 :(得分:0)

你可以试试下面的代码吗?

 //Copy constructor
    Shape(Shape& source) {
        cout << "Copy constructor called" << endl;
        name = new string[name];
        *name = *source.name;
    }