【交流学习】MyString的几个问题

brk1985 2011-07-21 10:00:48
1. MyString中运算符=重载,返回MyString类对象的引用,这里为什么要使用引用?能具体讲讲吗?

2. 输入输出运算符>>、<<重载,为什么要使用友元函数?

2. 书上说友元函数(运算符重载函数为友元函数)不能范围MyString类私有成员,由于重载了操作符[],可以通过下标索引访问。友元函数不是能通过对象名访问类私有成员的吗?
...全文
82 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KWDIWT 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 brk1985 的回复:]

引用 1 楼 luciferisnotsatan 的回复:
MyString 是什么?

1 不返回引用,会产生一个临时变量。如果返回指针,那么 a=b=c这种连等没法写了。
2 不用友元,访问不了私有成员。那就没意义了


不用友元、可以作为类成员函数呀。。。发现作为类成员函数不可取,使用重载后的<<运算符,<<(cout,str2);运行也是有问题,也不符合习惯思维。。。第三个……
[/Quote]

要是定义为类的成员函数,左操作数只能是该类类型的对象,这个用法与某些操作符使用方式相反(如输出操作符), 输出操作符左操作数必须为ostream类型...
brk1985 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]
MyString 是什么?

1 不返回引用,会产生一个临时变量。如果返回指针,那么 a=b=c这种连等没法写了。
2 不用友元,访问不了私有成员。那就没意义了
[/Quote]

不用友元、可以作为类成员函数呀。。。发现作为类成员函数不可取,使用重载后的<<运算符,<<(cout,str2);运行也是有问题,也不符合习惯思维。。。第三个问题是不是书本上的问题,友元函数肯定能通过对象名访问类私有成员char* str呀?
至善者善之敌 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]
MyString 是什么?

1 不返回引用,会产生一个临时变量。如果返回指针,那么 a=b=c这种连等没法写了。
2 不用友元,访问不了私有成员。那就没意义了
[/Quote]

+++1 正解
brk1985 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]
MyString 是什么?

1 不返回引用,会产生一个临时变量。如果返回指针,那么 a=b=c这种连等没法写了。
2 不用友元,访问不了私有成员。那就没意义了
[/Quote]

MyString ,,,编程对String类的实现。。。
luciferisnotsatan 2011-07-21
  • 打赏
  • 举报
回复
MyString 是什么?

1 不返回引用,会产生一个临时变量。如果返回指针,那么 a=b=c这种连等没法写了。
2 不用友元,访问不了私有成员。那就没意义了
brk1985 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kwdiwt 的回复:]
不能范围MyString类私有成员 //是什么意思?
[/Quote]

访问。。。搜狗输入法问题。。。
KWDIWT 2011-07-21
  • 打赏
  • 举报
回复
不能范围MyString类私有成员 //是什么意思?
brk1985 2011-07-21
  • 打赏
  • 举报
回复
第三个问题没人回答下吗???

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧