В чем разница между членом кучи и ссылкой одного? - PullRequest
0 голосов
/ 18 ноября 2018

Я получил этот конструктор копирования из книги и добавил cout для сравнения значений:

Person::Person(const Person& c) {
    m_pName = new string(*(c.m_pName));
    m_Age = c.m_Age;

    cout << m_pName << " " << &m_pName;
}

Cout выдаст 2 разных адреса.Книга, которую я читаю, не определяет, что такое m_pName сама по себе без &, она только говорит, что & m_pName - это адрес члена кучи.Какой адрес возвращается без оператора &?

edit: Вот класс и конструктор:

class Person() {
public:
    Person(const string& name = 0);
    Person(const Person& c);
private:
    string* m_pName;
}

Person::Person(const string& name) {
    m_pName = new string(name);
}

1 Ответ

0 голосов
/ 18 ноября 2018

Из предоставленного вами фрагмента похоже, что m_pName - это указатель на string (возможно, на std::string), поэтому m_pName без амперсанда - это адрес этой строки, только что выделенный.

...