由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问以下代码有什么错误?
相关主题
这段code有啥问题?C库函数:strpbrk() 的实现一问
菜鸟请教smart pointer这个类的default constructor怎么写
strlen怎么实现的c++ string 一问
const char *p, is it ok to change p[1] ?C++ Strategies and Tactics 书上一个问题求助
How to initialize object in constructor?a string define question (c++)
which str_cmp code is better?关于 exception 的一个问题
请帮忙看看这个字符函数的错误在哪里C++一个string的小问题
A string replacement problem from leetcode一个popen加gzip的问题
相关话题的讨论汇总
话题: string话题: init话题: data话题: char话题: strlen
进入Programming版参与讨论
1 (共1页)
t**g
发帖数: 1164
1
一道题目
要求从下面代码找出5个错误
我只找出来3个
所以请教一下大家
我找出来的3个:
1。class定义最后没有加";"分号
2。定义"="操作符的时候没有事先检查是否是self assignment
3. 定义init()函数里头,
data=new char[strlen(s)]这一句应该改成
data=new char[strlen(s)+1]? (因为c字符串好像默认尾端都有个额外的'\0')
class String
{
public:
String() { data = NULL; }
String( char * s)
{
init(s);
}
~String() { delete data; }
String ( String S )
{
init (S.data);
}

String& operator = ( const String & S
a****l
发帖数: 8211
2
I don't think 1 is necessarily a problem , especially in a code section like
this. E.g., every book writes a class example in this way.

【在 t**g 的大作中提到】
: 一道题目
: 要求从下面代码找出5个错误
: 我只找出来3个
: 所以请教一下大家
: 我找出来的3个:
: 1。class定义最后没有加";"分号
: 2。定义"="操作符的时候没有事先检查是否是self assignment
: 3. 定义init()函数里头,
: data=new char[strlen(s)]这一句应该改成
: data=new char[strlen(s)+1]? (因为c字符串好像默认尾端都有个额外的'\0')

X****r
发帖数: 3557
3
Copy constructor应该是String (const String& S)
init里没有检查s是否为NULL。
另外if (data) delete data;里的if (data)检查是不必要的,虽然也不是错误。
还有String(char *s)和init(char *s)完全可以接受const char *s,
当然这个也未必称得上错误。

【在 t**g 的大作中提到】
: 一道题目
: 要求从下面代码找出5个错误
: 我只找出来3个
: 所以请教一下大家
: 我找出来的3个:
: 1。class定义最后没有加";"分号
: 2。定义"="操作符的时候没有事先检查是否是self assignment
: 3. 定义init()函数里头,
: data=new char[strlen(s)]这一句应该改成
: data=new char[strlen(s)+1]? (因为c字符串好像默认尾端都有个额外的'\0')

b********r
发帖数: 1080
4
copy constructor 要用 reference, 如String (String& X)
另外 destructor 应该 delete[] data;
X****r
发帖数: 3557
5
对,要用delete[],刚才忘了这个了。

【在 b********r 的大作中提到】
: copy constructor 要用 reference, 如String (String& X)
: 另外 destructor 应该 delete[] data;

1 (共1页)
进入Programming版参与讨论
相关主题
一个popen加gzip的问题How to initialize object in constructor?
为啥gcc找不到类的构造函数?which str_cmp code is better?
question regarding effective c++ by Meyers请帮忙看看这个字符函数的错误在哪里
这段C++代码有啥问题A string replacement problem from leetcode
这段code有啥问题?C库函数:strpbrk() 的实现一问
菜鸟请教smart pointer这个类的default constructor怎么写
strlen怎么实现的c++ string 一问
const char *p, is it ok to change p[1] ?C++ Strategies and Tactics 书上一个问题求助
相关话题的讨论汇总
话题: string话题: init话题: data话题: char话题: strlen