C++中运算符重载怎么用(C++,开发技术)

时间:2024-05-06 07:43:06 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    C%2B%2B%E4%B8%AD%E8%BF%90%E7%AE%97%E7%AC%A6%E9%87%8D%E8%BD%BD%E6%80%8E%E4%B9%88%E7%94%A8

为什么要使用运算符重载

-C/C++的运算符,支持的数据类型,仅限于基本数据类型。

问题:一头牛+一头马 = ?(牛马神兽?)

一个圆 +一个圆 = ? (想要变成一个更大的圆)
一头牛 – 一只羊 = ? (想要变成4只羊,原始的以物易物:1头牛价值5只羊)

解决方案:

使用运算符重载

规则:

一斤牛肉:2斤猪肉

一斤羊肉:3斤猪肉

实现:

牛 + 牛 = ?猪肉

牛 + 羊 = ?猪肉

Cow类

Sheep类

Pork类

main.cpp

实现:

牛 + 牛 = ?猪肉

牛 + 羊 = ?猪肉

Cow类

Sheep类

Pork类

main.cpp

区别:

使用成员函数来实现运算符重载时,少写一个参数,因为第一个参数就是this指针。

一般情况下,单目运算符重载,使用成员函数进行重载更方便(不用写参数)

一般情况下,双目运算符重载,使用友元函数更直观

方便实现a+b和b+a相同的效果,成员函数方式无法实现。

例如: 100 + cow; 只能通过友元函数来实现

cow +100; 友元函数和成员函数都可以实现

特殊情况:

(1)= () [ ] -> 不能重载为类的友元函数!!!(否则可能和C++的其他规则矛盾),只能使用成员函数形式进行重载。

(2)如果运算符的第一个操作数要求使用隐式类型转换,则必须为友元函数(成员函数方式的第一个参数是this指针)

注意:

同一个运算符重载, 不能同时使用两种方式来重载,会导致编译器不知道选择哪一个(二义性)

本文:C++中运算符重载怎么用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:ASP.NET Core中策略授权和ABP授权怎么用下一篇:

20 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18