|
发表于 2020-3-9 16:45:02
|
显示全部楼层
TO: leonim (
---引用--
int main()
{
char *p=new char(50);
cout<<*p<<endl;
char *p1=new char[50];
p1="pananwei";
cout<<p1<<endl;
return 0;
}
:回复
输出结果是正确的,但是你的代码有问题,字符串的拷贝不能使用等号,
p1="pananwei"; 这句话是“给指针p1重新赋值”,并且放弃了刚才申请的“new char[50]”,
这句代码造成了内存泄露。
TO KTPOPO
“makeyou 兄弟没有理解C++的构造函数对基本类型也是有效的....”
这句话是对的,可以认为基本类型也有构造函数。
讨论了这么多,好像没有什么结果 ^-^
我认为,new char(50)相当于只申请一个字节的内在,它的值为ASCII=50的字符
new char[50]申请50个字符的空间
把char换成一个实际的类试试
class obj
{
pubic:
obj()
{ cout<< "obj()" << endl; }
~obj()
{ cout<< "~obj()" << endl; }
}; |
|