c++ 类里面的结构体指针析构 结构体里有string型

2024-12-01 03:29:34
推荐回答(1个)
回答1:

在你的第二段代码中

public:
Matrix() {
rows = 0;
columns = 0;
}

Matrix的构造函数没有对Person的指针进行初始化, 然后你的析构函数又删除了指针, 所以这就造成了错误。。。

你想想 你都没有new一个指针出来 怎么就能delete呢 new和delete是一一配对的。

可以这么改

Matrix() {
rows = 0;
columns = 0;
values = new Person();
}
~Matrix () {
delete values;
}

在你原来的代码中 用的是delete []values。。。这也是不对的。。。[]values是值数组结构啊。。但是你的声明里面 只是声明了一个Person的指针 而不是指针数组
你也可以把Person结构体加入构造函数和析构函数。。。这样完美点。。。