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

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

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

2. 书上说友元函数(运算符重载函数为友元函数)不能范围MyString类私有成员,由于重载了操作符[],可以通过下标索引访问。友元函数不是能通过对象名访问类私有成员的吗?
...全文
235 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
  • 打赏
  • 举报
回复
第三个问题没人回答下吗???
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 GridLayout是一种在Android系统中应用的布局方法,它通过构建二维网格来组织界面组件,为开发者提供了一个便捷且多样的途径来布置用户界面元素。在这个详尽的阐释中,我们将全面研究GridLayout的操作方式、其独有特性以及如何在实际的项目开发中高效地运用它。 GridLayout的关键在于其网格构造。在GridLayout中,每个控件可以占据一个或多个网格单元,这些单元通过行列坐标进行标识。通过设定控件的`android:layout_row`和`android:layout_column`属性,开发者可以明确控件在网格中的位置。比如,`android:layout_row="1"`意味着该控件位于第二行,而`android:layout_column="2"`则表示该控件位于第三列。 另外,GridLayout还支持设置控件能够跨越的网格单元数目,这通过`android:layout_rowSpan`和`android:layout_columnSpan`属性来实现。假如一个控件的`layout_rowSpan="2"`,那么它将覆盖两行的区域,`layout_columnSpan="3"`则会导致其横跨三列。这种高度的适应性使得GridLayout能够满足各种复杂的界面设计需求。 在GridLayout的应用中,控件的大小一般会自动适配以填满整个网格单元。不过,开发者也可以通过`android:layout_width`和`android:layout_height`属性来设定确切的尺寸,或者使用`android:layout_weight`属性来分配剩余的空间...

65,213

社区成员

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

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