栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

运算符重载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运算符重载

运算符重载基础
  • 概念:对已有的运算符重新定义,赋予其另一种共功能,以适应不同的数据类型,以operator作为关键字;
  • 目的:运算符重载的目的一般是为了自定义数据类型的运算;
  • 重载一般形式:类型 operator 重载的符号 (参数);
  • 原则:
    1. 不能创造新的运算符;
    2. 不能改变运算符的优先级和结合性;
    3. 重载运算符的函数不能有默认参数;
    4. 重载的运算符必须和用于定义的自定义类型对象一起使用,只有应该有一个是类对象,即不允许参数全部是c++的标准类型;(这些是我笔记上记得,如有误还请不吝赐教)
  • (二级考点)只能通过成员函数重载的运算符有四个,分别是:
    1. =:赋值运算符;
    2. ():函数调用运算符;
    3. []:下标运算符;
    4. ->:通过指针方位类成员的运算符;(当时笔记上记的是这个名字,如有误还请不吝赐教)
  • 五个不能重载的运算符:
    1. .:成员访问运算符;
    2. *:成员指针访问运算符;
    3. ‘::’:域运算符;(单引号里面的才是哟)
    4. sizeof:长度运算符;
    5. " ? : ":条件运算符;
  • 有的重载或者别人写函数中会看到 & 或者 * 这两个符号(例如:类型& operator 某运算符 ();),一个是返回引用,一个是函数指针,关于它们的作用不做叙述,可自行查阅相关资料;
重载’-'运算符的简单例子
class XXX
{
public:
//类型1
  friend XXX operator - (XXX &x1, XXX &x2)//友元可访问保护数据成员和私有数据成员
  {
     xxx x3;
     x3.a=x1.a-x2.a;
     return x3;
  }
//类型2
  int operator - ()
  {
     return this->a-this->b;
  }
protected:
   int a;
   int b;
}
重载’+'运算符的简单例子
//与'-'运算符相似,或者说一摸一样;不再做叙述
重载’long’运算符例子
//重载
operator long() const { return this->a/this->b;}
//使用
XXX x1;
cout< 
重载流运算符’>>’ 
//一般形式如下,但是只能作为非成员函数重载
istream& operator >> (istream &, 类名 &);
//使用时要作为非成员函数重载
friend istream& operator >> (istream &in, xxx &x1)
{
   in>>x1.a>>x1.b;
   return in;
}

//使用
XXX x1;
cin>>x1;
  • 文章并没有细致的叙述,各位可参考文章自己动手写一遍,多动手才是王道;
  • 文章仅作为自己的笔记和参考,如有纰漏,还请不吝赐教;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号