-
-
p253 疑问依旧存在,版主来看看吧,不知道是错误 还是我理解错了?
-
发表于:
2012-3-22 22:46
6358
-
p253 疑问依旧存在,版主来看看吧,不知道是错误 还是我理解错了?
p253 第三行说道
“因为这样的代码不是MyString在定义时赋初值,所以不会触发MySring的拷贝构造函数”
看到这个里 我产生的疑惑 记得映象里是依旧调用的
所以在vs2010 和vc6.0中都实验了下 都有调用
代码如下:
#include <stdio.h>
#include<stdlib.h>
#include <IOSTREAM>
class CMyString
{
public:
CMyString()
{
m_pString=NULL;
}
CMyString(CMyString& obj)
{
printf("复制构造函数");
int len=strlen(obj.m_pString)+1;
this->m_pString=new char[len];
strcpy(this->m_pString,obj.m_pString);
};
CMyString& operator=(const CMyString& aMess)
{
int len=strlen(aMess.m_pString)+1;
this->m_pString=new char[len];
strcpy(this->m_pString,aMess.m_pString);
return *this;
}
~CMyString()
{
if (m_pString!=NULL)
{
delete[] m_pString;
m_pString=NULL;
}
}
void SetString(char* pString)
{
int nLen=strlen(pString)+1;
if (m_pString!=NULL)
{
delete [] m_pString;
m_pString=NULL;
}
m_pString=new char[nLen];
strcpy(m_pString,pString);
}
char* m_pString;
};
//
void show(CMyString MYstring)
{
printf(MYstring.m_pString);
}
CMyString GetMyString()
{
CMyString MYstring;
MYstring.SetString("abc");
return MYstring;
}
int main()
{
CMyString na;
na=GetMyString();
getchar();
return 0;
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!