堆成员和引用成员之间有什么区别?

时间:2018-11-18 15:56:07

标签: c++ pointers constructor reference heap

我从书中得到了这个副本构造函数,并添加了cout来比较值:

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

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

该指令将输出2个不同的地址。我正在阅读的书没有定义没有&的m_pName本身,它只说&m_pName是堆成员地址。没有&运算符的返回地址是什么?

编辑:这是类和构造函数:

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 :(得分:0)

在您提供的代码段中,m_pName似乎是指向string的指针(也许指向std::string的指针),因此m_pName是没有符号的地址刚刚分配的字符串。

相关问题