我从书中得到了这个副本构造函数,并添加了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);
}
答案 0 :(得分:0)
在您提供的代码段中,m_pName
似乎是指向string
的指针(也许指向std::string
的指针),因此m_pName
是没有符号的地址刚刚分配的字符串。