一个关于复制构造函数问题
class stringbad{
private:
char * str;
int len;
public:
stringbad(const stringbad & st); //复制构造函数
…………
};
stringbad::stringbad(const stringbad & st)
{
len=st.len;
str=new char[len+1];
std::strcpy(str,st.str);
cout<<…………;
}
int main()
{
stringbad sports("i love you");
stringbad sailor=sports;
……
}
为了简便我只写出关键语句,其他的我不写了,免得看起来杂乱。其实我想问的问题是main函数执行stringbad sailor=sports的时候,复制构造函数中这个std::strcpy(str,st.str)语句是不是把sport.str(表示的是指针)的内容直接复制给sailor.str?那不意味着sailor.str=sport.str?
这样他们不是占用同一个内存地址吗(“i love you”的地址)?或者是我想错了?还是其他的什么?