加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – >>和<<运算符重载

发布时间:2020-12-16 10:50:31 所属栏目:百科 来源:网络整理
导读:我刚刚为我的编程课做了一个测验,并且错误地提出了这个问题: The return type of the function to overload the operator must be a reference to an ostream object. 这对我来说似乎不对.当然,C比这更开放.但我还以为我会在这里问.这是对的(或错的)怎么样
我刚刚为我的编程课做了一个测验,并且错误地提出了这个问题:

The return type of the function to
overload the operator << must be a
reference to an ostream object.

这对我来说似乎不对.当然,C比这更开放.但我还以为我会在这里问.这是对的(或错的)怎么样?当涉及到运算符重载时,我的C知识开始真正消失.

解决方法

C不要求返回类型是对ostream对象的引用.但是,如果您尝试执行以下操作:

cout << instance_of_custom_type << 3 << "hi" << endl;

然后你需要:

ostream &operator << (ostream &os,custom_type &t);

但是,如果您正在执行类似写入大整数类型的操作并希望支持位移,则可能类似于:

BigInt operator << (const BigInt &i,unsigned int shift);

为了进一步扩展这一点,原来使用<<运算符用于位移. 1<<例如,8是256. C为此添加了一个(略微令人困惑的)第二次使用,并在ostream上重载它以表示对流的“输出”.你可以在一个重载的运算符中做任何你喜欢的事情 - 它就像一个函数一样工作,然而,运算符有人类期望与它们相关:程序员期望在C中,<<是位移或流输出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读