当前位置:  编程技术>c/c++/嵌入式

C++输入输出操作符重载的深入分析

    来源: 互联网  发布时间:2014-10-16

    本文导语:  操作符的重载有一些规则: 1. 重载操作符必须具有一个类类型或枚举类型操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。如:int operator+(int, int), 不可以    2. 为类设计重载操作符的...

操作符的重载有一些规则:
1. 重载操作符必须具有一个类类型或枚举类型操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。
如:int operator+(int, int), 不可以   
2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数。在某些情况下,程序没有选择,操作符必须是成员;在另外一些情况下,有些经验可以指导我们做出决定。下面是一些指导:
a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。
b. 像赋值一样,复合赋值操作符通常应定义为类的成员。与赋值不同的是,不一定非得这样做,如果定义为非成员复合赋值操作符,不会出现编译错误。
c. 改变对象状态或与给定类型紧密联系的其他一些操作符,如自增,自减和解引用,通常应定义为类成员。
d 对称的操作符,如算术操作符,相等操作符,关系操作符和位操作符,最好定义为普通非成员函数。
e io操作符必须定义为非成员函数,重载为类的友元。
代码如下:

// OverloadCinCout.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
class Fruit
{
public:
 Fruit(const string &nst = "apple", const string &cst = "green"):name(nst),colour(cst){}
 ~Fruit(){}
 friend ostream& operator > (istream& is, Fruit& f);       // 所以应该声明为类的友元函数
private:
    string name;
 string colour;
};
ostream& operator f.colour;
 if (!is)
 {
  cerr

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Uploadify 'uploadify.php'存在多个输入验证漏洞
  • KDE编程中,编辑器可以输入英文,但中文无法输入,换过输入法,还不行
  • HTML 各种表单和输入框用法介绍
  • 在red hat 7.2 中如何实现中文输入?是不是要装个输入法呀?有微软输入法吗?
  • 在linux下终端C编程做登陆时界面时,怎么在输入密码时让它不显示输入内容,或者输入一个字符是*
  • 当A,B程序都在不断读入标准输入的时候, 为什么往A标准输入里面输入的数据一定能被A读到,而不是被B读到?
  • redhat9.0下,我安装了紫光输入法和firefox浏览器,结果发现在firefox下用“Ctrl-Shift”切换不出输入法,怎么办?有其他输入法或者浏览
  • 在linux下如何用c实现类似于Linux登陆时输入密码的场景: 即输入密码时不在屏幕上显示所输入的内容
  • 我要处理用户输入的一个字符窜。怎样写用户输入这段代码?
  • C语言下,如何识别键盘输入和文件输入?
  • 请问在RH9下我怎么输入汉字呢?输入法在哪儿可以打开.
  • linux怎么输入中文? 有没有中文输入法阿?
  • 为什么我的jb4打开后输入法会自动变成中文输入啊
  • 如何验证表单没有输入任何内容(包括只输入空格)
  • 请教一下,如何在英文FC3中调用输入法输入中文?
  • 谁知道什么软件能在linux下输入中文, 和下载中文输入法网址, 急,急,急!!!
  • JBuilder 6 在 winxp 下使用微软拼音输入法,输入中文。出现不正常。jbuilder.死锁
  • linux 繁体 汉字输入法 问题 linux 繁体 汉字输入法 问题
  • f7下可以设置输入法的热键,但是怎么在中英文输入法间切换呢?有快捷键吗?
  • 我用管道作为一个程序的标准输入时,程序报错说不是一个终端不能做为标准输入,请问怎么样管道成为它的标准输入呢???具体错误信息见内
  • SSH登陆linux,明明输入对的密码,还是弹出来要我输入密码?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3