关于C++中析构函数的问题

2026年09月09日 01:07
有3个网友回答
网友(1):

“p[0] = B("ma", 4.8); //调用一般构造函数
p[1] = B("wang", 3.6); //初始化每个元素
p[2] = B("li", 3.1);

有问题,你这样只是创建了对象 B("ma", 4.8)然后将它赋值给p[0],而p[0]在创建对象数组时已经分配内存空间,此时只是给p[0]改个指向而已,所以B("ma", 4.8)在完成赋值后自动解析,因为没有给它分配内存空间。

网友(2):

p = new B[3];
cout << "初始化对象数组p[ ] !\n";
//p[3]={ B("ma", 4.8), B("wang", 3.6), B("li", 3.1) };
p[0] = B("ma", 4.8); //调用一般构造函数
p[1] = B("wang", 3.6); //初始化每个元素
p[2] = B("li", 3.1);

用的有问题,这种用法很少见!构造函数是类实例化时自动调用的。
通常这样写
B *p[3];
p[0] = new B(“ma”, 4.8);

p[0] = B("ma", 4.8);
B("ma", 4.8);没有分配内存。

网友(3):

到我的空间下看下相关文章,调试方面的,也许对你解决问题提供思路。
有需要交流,加我好友。