不起眼的初化问题的请教
程序如下:
#include<iostream.h>
#include<string>
class a
{
public:
a(){}
a(char *p)/*:s(p)*/
{
s=new char[strlen(p)+1];
strcpy(s,p);
}
a(const a &other)
{
s=new char[strlen(other.s)+1];
strcpy(s,other.s);
}
~a()
{
delete s;
}
void disp()
{
cout<<s<<endl;
}
private:
char *s;
};
int main()
{
a m("hello world");
a n(m);
m.disp();
n.disp();
return 0;
}
在 构造函数 a(char *p)/*:s(p)*/
{
s=new char[strlen(p)+1];
strcpy(s,p);
}
中 如果我用初始化列表 既
a(char *p):s(p){}
也能运行出来 但是有错误的提示 在运行中产生的
不信您可以试一试
为什么会这样啊
这两种方式 应该怎么区别和使用啊
谢谢大家的指教了