#include <iostream>
using namespace std;
#include <string>
class Phone
{public:
Phone(string pname)
{
pname=m_pname;
cout<<"Phone的构造函数"<<endl;
}
~Phone()
{
cout<<"Phone的析构函数"<<endl;
}
string m_pname;
};
class Person
{
public:
Person(string name,string pname):m_name(name),m_phone(pname)
{
cout<<"Person的构造函数"<<endl;
}
~Person()
{
cout<<"Person的析构函数"<<endl;
}
string m_name;
Phone m_phone;
};
void test01()
{
Person p("茂东","8848");
cout<<p.m_name<<"拿的是:"<<p.m_phone.m_pname<<endl;
}
int main(){
test01();
system("pause");
return 0;
}
参考GPT和自己的思路:
问题出在Phone类的构造函数中。在这个构造函数中,你错误地将m_pname赋值为pname(应该是pname=m_pname)。因此,在你创建Person对象时,Phone对象的m_pname成员没有被正确初始化,所以无法输出。要解决这个问题,你需要将Phone构造函数中的赋值语句改为pname=m_pname。