重载运算符

什么是重载运算符

重载运算符是通过对运算符的重新定义,使得其支持特定数据类型的运算操作。重载运算符是重载函数的特殊情况。

C++自带的运算符,最初只定义了一些基本类型的运算规则。当我们要在用户自定义的数据类型上使用这些运算符时,就需要定义运算符在这些特定类型上的运算方式。


重载运算符的限制

  • 只能对现有的运算符进行重载,不能自行定义新的运算符。
  • 以下运算符不能被重载:::(作用域解析),.(成员访问),.*(通过成员指针的成员访问),?:(三目运算符)。
  • 重载后的运算符,其运算优先级,运算操作数,结合方向不得改变。
  • &&(逻辑与)和 ||(逻辑或)的重载失去短路求值。

重载运算符举例

我们以 + 为例.

首先定义一个结构体 Node

struct Node
{
    int a,b;
}k1,k2;

然后我们想对 $k1$ 与 $k2$ 进行运算,想用 $k1+k2$ 表示其中的 $a$ 相加, $b$ 也相加,然后再 $mod$ 一个值。写一次还好,写多了就会很麻烦,除了定义一个结构体,我们还可以选择重载运算符。例如:

struct Node {
    int a, b;
    Node () {a = b = 0; return ;}
    inline Node operator + (const Node p) const {
        Node t;
        t.a=a+p.a;
        t.b=a+p.b;
        return t;
    }
}

然后就可以用 $k1+k2$ 表示以上操作了!

文章标题:重载运算符
文章链接:https://www.laoguantx.top/%e9%87%8d%e8%bd%bd%e8%bf%90%e7%ae%97%e7%ac%a6.html
文章内容仅供参考,其中可能会有部分内容参考、引用其他网站,转发请务必标注作者为 “老官童鞋gogo” ,原文链接为 https://www.laoguantx.top/%e9%87%8d%e8%bd%bd%e8%bf%90%e7%ae%97%e7%ac%a6.html 。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇