0

我可以使用带有 new 关键字的复制构造函数吗?我的代码还显示 2 个 obj 指针具有相同的内存地址?

#include <iostream>

using namespace std;

class Person{

public:

    int age;

        Person() {     }
        Person(const Person& p ) : age(p.age) {        }

};
int main()
{

    Person *p = new Person();
    p->age = 15;

    Person *y = p;

    // Person *z = new Person(p); why no work???


    // p and y have the same memory addres??
    std::cout << p;
    std::cout << y;

    return 0;
}
4

3 回答 3

2

几乎在所有方面都更好

int main()
{

Person p;
p.age = 15;

Person y(p);


std::cout << &p;
std::cout << &y;

return 0;
}

new不是你的朋友。new是所有 RAII 的敌人。下来new

于 2013-10-15T20:29:33.310 回答
2
Person *z = new Person(p); // why no work???

因为p是指针,而不是Person&. 您需要取消引用它以获取对象:

Person *z = new Person(*p);
//                     ^^
于 2013-10-15T20:23:42.690 回答
0

因为 p 是一个指针。

尝试

Person *z = new Person(*p);
于 2013-10-15T20:24:44.373 回答