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
Person *z = new Person(p); // why no work???

pはポインタであり、 ではありませんPerson&。オブジェクトを取得するには、逆参照する必要があります。

Person *z = new Person(*p);
//                     ^^
于 2013-10-15T20:23:42.690 に答える
2

ほとんどすべての点で優れたメイン

int main()
{

Person p;
p.age = 15;

Person y(p);


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

return 0;
}

newあなたの友達ではありません。newRAII であるすべての敵です。でダウンnew

于 2013-10-15T20:29:33.310 に答える
0

p はポインタだからです。

試す

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