请教关于primer中的一个问题

shockwave926 shockwave926 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
c++ primer中有个例子看不懂,如下:
#include <iostream>
#include <assert.h>
#include <iomanip>
using namespace std;


class myString;

istream& operator>>(istream&,myString&);
ostream& operator<<(ostream&,const myString&);

class myString
{
public:
myString& operator=(const myString&);
int size(){return _size;}
char* c_str(){return _string;}
.....
private:
int _size;
char* _string;
....
};

inline myString& myString::operator =(const myString& str)
{
if(this!=&str)
{
if(_string)
delete[]_string;
_size=str._size;//问题一
_string=new char[_size+1];
strcpy(_string,str._string);
}
return *this;
}



inline istream& operator>>(istream& io,myString& s)
{
const int limit_string_size=4096;
char inBuf[limit_string_size];
io>>setw(limit_string_size)>>inBuf;
s=inBuf;
return io;
}

inline ostream& operator<<(ostream& os,myString& s)//问题二
{
return os<<s.c_str();
}


问题一:为什么用_size=str.size()会报编译错误,而用_size=str._size却没问题??
问题二:为什么<<重载的声明中的参数用const修饰,而在实现的时候用const就不行,必须去掉才会编译通过??

ps:环境windowsxp+ vc++6.0
以上都包含在一个头文件中myString.h

...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
shockwave926
C++ 语言 65,214 成员 250,514 内容