B*********n 发帖数: 8 | 1 What is wrong with the below code?
class A
{
char *p;
public:
A(const char* str)
{
p=new char[strlen(str)+1];
strcpy(p,str);
}
~A()
{
delete p;
}
};
int main()
{
A s("Object s");
A t=s;
s.~A();
A u("Object u");
u=s;
return 0;
}
看完代码后,我的答案是:
1, 用delete[] p 而不是 delete p
2. A t=s, 用了默认的拷贝构造函数,而它用得是shollow copy
3, s.~A(), 显示调用了析构函数
4. u = s , 用了默认的拷贝构造函数, 用的shollow copy, 而且s 里的动态内存被释
放了
我想请教大家的是:关于 1, 我在网上查了一下,有人说对于,没有析构函数的类型
,delete p 也是可以的, 这种说法对吗?
我的答案对吗?全吗?
谢谢了! |
|