运算符重载,什么时候用友元?
来源:互联网 发布:爬虫数据 编辑:程序博客网 时间:2024/06/04 18:16
重载ostream和istream运算符的时候,必须重载为友元,这是为什么?
什么时候应该用友元函数?什么时候用成员函数?
有些操作必须是成员函数:比如构造函数,拷贝构造函数,析构函数以及虚函数
由于成员是局部于类的,所以,这些函数还是优先被作为成员。
由此可见,修改一个类对象状态的操作,应该或者是一个成员,或者是一个带有非
const引用参数的全局函数。那些要求基础类型的左值运算符作为用户定义类型的成员函
数最为自然。
如果希望某个运算的所有运算对象都能允许隐式类型转换,实现他的函数就应该作为
非成员函数,取const引用参数或非引用参数。在应用不需要基础类型的左值的运算符(+,
-||等),显示它们的函数通常采用这种方式。这些运算符经常需要访问其运算对象类的内部
表示,因此,它们friend函数的最常见的来源。
如果没有定义类型转换,选择成员函数要比采用引用参数的友元函数更好
PS:如果重载为成员函数,编译时就会产生以下错误:
error C2679: 二进制“<<”: 没有找到接受“MyString”类型的右操作数的运算符(或没有可接受的转换)
- 运算符重载,什么时候用友元?
- 用友元函数重载运算符
- 重载输出运算符,不用友元函数
- 用友元函数实现复数类的运算符重载
- 运算符重载,何时用友元,何时用成员函数
- 流运算符为什么不能重载为成员函数,只能用友元函数重载
- 流运算符为什么不能重载为成员函数,只能用友元函数重载
- 8-1—— 用友元函数进行复数类运算符的重载 任务二
- 复数类中运算符的重载(用友元函数)
- 2014-项目一--用友元函数实在复数的运算符重载
- 第八周 项目1.2 用友元函数实现复数类中的运算符重载
- 八周 项目 1.2 用友元函数完成复数中的运算符重载
- 第8周项目1-2用友元函数完成运算符的重载
- 第八周 项目1-用友元函数实现复数类中的运算符重载
- 第八周项目一 2用友元函数实现复数类中的运算符重载
- 部分运算符只能用友元函数(全局函数)重载 以及链式法则
- 飛飛(四十三)复数类中的运算符重载(用友元函数编写)
- 飛飛(四十九)用友元函数来编写运算符重载
- 通过了09年下半年信息系统项目管理师考试,得瑟下
- fsck详解
- IList转DataTable
- SQL:為字符串外的臨時表插入數據
- 用Struts的Token机制解决表单重复提交
- 运算符重载,什么时候用友元?
- php获取表单提交的数据
- 性能测试VS负载测试VS压力测试
- 2008 excel
- JUnit4快速入门(转)
- 关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序
- 【C/C++】总结常用的函数调用约定
- 推荐几个比较好的android学习网站
- 在RFT中使用Robot类