请教一个面试题

boys2002 2008-10-21 06:29:14
找错误::


#include <stdio.h>
#include <string>
class string
{
public:
string(const char *str);
~string();
private:
char *data;
};
string::string(const char *str)
{
data=new char[strlen(str)+1];
strcpy(data,str);
}
inline string::~string()
{
delete []data;
}
void main()
{
string s("wo ai bei jing!");
printf("%s",s);
}
...全文
186 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-10-22
  • 打赏
  • 举报
回复
我感觉一点儿问题没有!
xuboamei 2008-10-22
  • 打赏
  • 举报
回复
vc6.0编译通过,结果也没问题
xxgamexx 2008-10-22
  • 打赏
  • 举报
回复
#include<string>
中应该定义了一个string类,为什么自己再定义一个string类会没有冲突?
Fighting Horse 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 arong1234 的回复:]
应该是operator const char*
引用 8 楼 haggard_hunan 的回复:
需要重载operator char*():
[/Quote]

重载编译器也不会自动转换成const char*,还是自己转换吧
das_jack 2008-10-21
  • 打赏
  • 举报
回复
类型转换string---const char*
另外,跟名字空间没关系,注意std没被引入
wwwypy 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zmlovelx 的回复:]
类改名,或者放在其他命名空间中 然后重载输出操作符
或者给一个访问data的数据的接口
[/Quote]
命名冲突,需要重载operator char*():
arong1234 2008-10-21
  • 打赏
  • 举报
回复
应该是operator const char*
[Quote=引用 8 楼 haggard_hunan 的回复:]
需要重载operator char*():
[/Quote]
haggard_hunan 2008-10-21
  • 打赏
  • 举报
回复
需要重载operator char*():
太乙 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zmlovelx 的回复:]
类改名,或者放在其他命名空间中 然后重载输出操作符
或者给一个访问data的数据的接口
[/Quote]

这个不是问题!!!

xxgamexx 2008-10-21
  • 打赏
  • 举报
回复
There are something wrong with the "printf("%s",s);"
太乙 2008-10-21
  • 打赏
  • 举报
回复


#include <stdio.h>
#include <string>
class string
{
public:
string(const char *str);
~string();
private:
char *data;
};
string::string(const char *str)
{
data=new char[strlen(str)+1];
strcpy(data,str);
}
inline string::~string()
{
delete []data;
}
void main()
{
string s("wo ai bei jing!");
printf("%s",s);
}

nothing~~~

xxgamexx 2008-10-21
  • 打赏
  • 举报
回复
呀~~ 没看见他是class string..........
帅得不敢出门 2008-10-21
  • 打赏
  • 举报
回复
类改名,或者放在其他命名空间中 然后重载输出操作符
或者给一个访问data的数据的接口
帅得不敢出门 2008-10-21
  • 打赏
  • 举报
回复
#include <string>
class string
命名空间污染了.
引入系统的string又自定义一个string类
xxgamexx 2008-10-21
  • 打赏
  • 举报
回复
有错误? 没看出来

printf("%s",s);

你要输出什么?

data是不可能了 ,因为他是private变量,需要接口在能访问到

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧