由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这个拷贝构造函数有什么问题?
相关主题
IBM高级软件工程师的示例代码,大家看看有多少个bug?包子呼唤大牛--问关于C++Destructor的问题 (转载)
再问一个碰到的C++问题bloomberg电面结束,送上面经,求祝福
leetcode上这个链表节点的定义是什么意思?ListNode(int x) : val(x), next(NULL) {}How to convert string to string array (or vector) (转载)
copy constructor 的问题问个关于java和C++的问题
请教大家一道关于c++的面试题请问关于overloading << (转载)
贡献一个Java 程序 面试题,看不懂为啥。请指教!一道 C++ 的题。
唉,随便贡献个phone interview面经吧。CS的。发个C++语法问题,调节一下气氛
刚才的电话面试,一点总结[divshare.com][请教] C++ coding question
相关话题的讨论汇总
话题: mystr话题: data话题: null话题: size话题: char
进入JobHunting版参与讨论
1 (共1页)
m***n
发帖数: 2154
1
MyStr::MyStr(const MyStr& original)
{
p = new char[original.size+1];
memcpy(p, original.data, original.size);
p[original.size] = '\0';
}
char* data;
int size;
谢谢。更新了一下 ,还有问题么?
更新了成员变量。
w****x
发帖数: 2483
2

p.size??p.data??这个是C++吗, 啥啊

【在 m***n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: p[original.size] = '\0';
: }
: char* data;
: int size;
: 谢谢。更新了一下 ,还有问题么?
: 更新了成员变量。

m***n
发帖数: 2154
3
重新写了一下。

【在 w****x 的大作中提到】
:
: p.size??p.data??这个是C++吗, 啥啊

l*****a
发帖数: 14598
4
waht is p?
why not use this->data or data

【在 m***n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: p[original.size] = '\0';
: }
: char* data;
: int size;
: 谢谢。更新了一下 ,还有问题么?
: 更新了成员变量。

m***n
发帖数: 2154
5
just assume it is data. what's the problem with the code ?

【在 l*****a 的大作中提到】
: waht is p?
: why not use this->data or data

R***Z
发帖数: 1167
6
p[original.size+1] = '\0'越界了吧?应该是p[original.size]= '\0'

【在 m***n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: p[original.size] = '\0';
: }
: char* data;
: int size;
: 谢谢。更新了一下 ,还有问题么?
: 更新了成员变量。

l*****a
发帖数: 14598
7
BTW, p[original.size]='\0';

【在 m***n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: p[original.size] = '\0';
: }
: char* data;
: int size;
: 谢谢。更新了一下 ,还有问题么?
: 更新了成员变量。

c*****n
发帖数: 96
8
MyStr::MyStr(const MyStr& original)
{
p = new char[original.size+1];
memcpy(p, original.data, original.size);
==> p[original.size+1] = '\0';
}
There is a buffer overflow issue. Should be p[original.size] = '\0'
m***n
发帖数: 2154
9
这个是我写错了,原题是orignal size的。。

【在 c*****n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: ==> p[original.size+1] = '\0';
: }
: There is a buffer overflow issue. Should be p[original.size] = '\0'

w****x
发帖数: 2483
10

p每检测NULL

【在 m***n 的大作中提到】
: 这个是我写错了,原题是orignal size的。。
相关主题
贡献一个Java 程序 面试题,看不懂为啥。请指教!包子呼唤大牛--问关于C++Destructor的问题 (转载)
唉,随便贡献个phone interview面经吧。CS的。bloomberg电面结束,送上面经,求祝福
刚才的电话面试,一点总结[divshare.com]How to convert string to string array (or vector) (转载)
进入JobHunting版参与讨论
m***n
发帖数: 2154
11
引用cannot be null ?

【在 w****x 的大作中提到】
:
: p每检测NULL

l******d
发帖数: 530
12
p, origin.data是不是都要检测null?MyStr的成员定义有没有列出来?
y********g
发帖数: 8
13
没实现copy on write?
l*********8
发帖数: 4642
14
class MyStr {
MyStr() : data(NULL), size(0)
{
}
MyStr(const MyStr& original) : data(NULL), size(0)
{
p = new char[original.size+1];
if (!p || !(original.data))
throw exception;
memcpy(p, original.data, original.size);
p[original.size] = '\0';
data = p;
size = original.size;
}
private:
char* data;
int size;
}

【在 m***n 的大作中提到】
: MyStr::MyStr(const MyStr& original)
: {
: p = new char[original.size+1];
: memcpy(p, original.data, original.size);
: p[original.size] = '\0';
: }
: char* data;
: int size;
: 谢谢。更新了一下 ,还有问题么?
: 更新了成员变量。

l*****a
发帖数: 14598
15
where does p come from?
why need member initialization list for copy constructor?
why origianl.data can't be null?

【在 l*********8 的大作中提到】
: class MyStr {
: MyStr() : data(NULL), size(0)
: {
: }
: MyStr(const MyStr& original) : data(NULL), size(0)
: {
: p = new char[original.size+1];
: if (!p || !(original.data))
: throw exception;
: memcpy(p, original.data, original.size);

l*********8
发帖数: 4642
16
Thank you for the comments.

【在 l*****a 的大作中提到】
: where does p come from?
: why need member initialization list for copy constructor?
: why origianl.data can't be null?

l*********8
发帖数: 4642
17
Thank you for the comments.
I modified my code. But I still like the initialization list :-)
class MyStr {
MyStr() : data(NULL), size(0)
{
}
~MyStr()
{
if (data != NULL)
delete [] data;
}
MyStr(const MyStr& original) : data(NULL), size(0)
{
data = new char[original.size+1];
if(original.data == NULL)
return;
memcpy(data, original.data, original.size);
data[original.size] = '\0';
size = original.size;
}
private:
char* data;
int size;
}

【在 l*****a 的大作中提到】
: where does p come from?
: why need member initialization list for copy constructor?
: why origianl.data can't be null?

l*****a
发帖数: 14598
18
你为什么要保留没有意义的code?
btw, if u really want to keep them,
I suggest u just keep
MyStr(const MyStr& original) : size(original.size)

【在 l*********8 的大作中提到】
: Thank you for the comments.
: I modified my code. But I still like the initialization list :-)
: class MyStr {
: MyStr() : data(NULL), size(0)
: {
: }
: ~MyStr()
: {
: if (data != NULL)
: delete [] data;

l*********8
发帖数: 4642
19
MyStr(const MyStr& original)
{
if(original.data == NULL) {
data = NULL;
size = 0;
return;
}
data = new char[original.size+1];
memcpy(data, original.data, original.size);
data[original.size] = '\0';
size = original.size;
}

【在 l*****a 的大作中提到】
: 你为什么要保留没有意义的code?
: btw, if u really want to keep them,
: I suggest u just keep
: MyStr(const MyStr& original) : size(original.size)

l*********8
发帖数: 4642
20
不太理解。
copy constructor是用在下面两种情况:
MyClass A(B); // B is a MyClass object
MyClass A = B;
为什么要判断参数是否就是自身呢?为什么要return呢?
你说的是operator = ?
d*****y
发帖数: 205
21
sorry,我看成 是assignment了(A=B),抱歉

【在 l*********8 的大作中提到】
: 不太理解。
: copy constructor是用在下面两种情况:
: MyClass A(B); // B is a MyClass object
: MyClass A = B;
: 为什么要判断参数是否就是自身呢?为什么要return呢?
: 你说的是operator = ?

1 (共1页)
进入JobHunting版参与讨论
相关主题
[请教] C++ coding question请教大家一道关于c++的面试题
Amazon最近电面面经贡献一个Java 程序 面试题,看不懂为啥。请指教!
cc150 string基础疑惑:1.5 and 1.8唉,随便贡献个phone interview面经吧。CS的。
问个构造函数的问题刚才的电话面试,一点总结[divshare.com]
IBM高级软件工程师的示例代码,大家看看有多少个bug?包子呼唤大牛--问关于C++Destructor的问题 (转载)
再问一个碰到的C++问题bloomberg电面结束,送上面经,求祝福
leetcode上这个链表节点的定义是什么意思?ListNode(int x) : val(x), next(NULL) {}How to convert string to string array (or vector) (转载)
copy constructor 的问题问个关于java和C++的问题
相关话题的讨论汇总
话题: mystr话题: data话题: null话题: size话题: char