| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖
标题:不起眼的初化问题的请教
取消只看楼主 加入收藏
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
结帖率:100%
收藏
 问题点数:0 回复次数:5 
不起眼的初化问题的请教

程序如下:
#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){}
也能运行出来 但是有错误的提示 在运行中产生的
不信您可以试一试
为什么会这样啊
这两种方式 应该怎么区别和使用啊
谢谢大家的指教了



搜索更多相关主题的帖子: 不起眼 
2006-07-14 20:12
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
没太明白您的意思
使用初始化列表的时候构造函数体内是空的
反正这个地方有点糊涂
大家指点指点小弟吧 谢谢大家了
2006-07-14 20:40
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
我的意思是先把构造函数改成
a(char *p):s(p){}
也一样能运行 但是会出错的


2006-07-14 21:53
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
你的意思是如果S是指针 那么就必须不能在初始化列表中进行初始化吗?
如果能 帮我举个例子吧 我学的不好 请多指教
谢谢了
2006-07-14 23:02
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 

知道了
谢谢了 那初始化列表一般竟什么时候用啊?
2006-07-14 23:05
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
知道了
谢谢大家了
2006-07-15 20:16
快速回复:不起眼的初化问题的请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047480 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved