首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

允许重载哪些Dart运算符?

在Dart语言中,运算符重载是指为已有的运算符赋予新的含义,使其作用于自定义的对象时能够执行特定的操作。Dart允许重载以下运算符:

  1. 一元运算符
    • +:正号
    • -:负号
    • !:逻辑非
    • ~:按位非
  • 二元运算符
    • +:加法
    • -:减法
    • *:乘法
    • /:除法
    • %:取模
    • **:幂运算
    • &:按位与
    • |:按位或
    • ^:按位异或
    • <<:左移
    • >>:右移
    • >>>:无符号右移
    • +(字符串连接):用于字符串连接
  • 比较运算符
    • ==:等于
    • !=:不等于
    • <:小于
    • >:大于
    • <=:小于等于
    • >=:大于等于
  • 赋值运算符
    • =:赋值
    • +=:加法赋值
    • -=:减法赋值
    • *=:乘法赋值
    • /=:除法赋值
    • %=:取模赋值
    • &=:按位与赋值
    • |=:按位或赋值
    • ^=:按位异或赋值
    • <<=:左移赋值
    • >>=:右移赋值
    • >>>=:无符号右移赋值
  • 逻辑运算符
    • &&:逻辑与
    • ||:逻辑或
  • 条件运算符
    • ? ::三元运算符

优势

  • 代码可读性:通过重载运算符,可以使代码更加直观和易读。
  • 表达能力:允许开发者定义对象之间的自然操作方式。

类型

  • 一元运算符重载:改变单个操作数的运算符行为。
  • 二元运算符重载:改变两个操作数之间的运算符行为。
  • 比较运算符重载:改变对象之间的比较行为。

应用场景

  • 数学计算库:如矩阵运算库可以重载加减乘除等运算符。
  • 自定义集合类:如自定义列表或映射类,可以重载索引运算符[]
  • 字符串处理:自定义字符串类可以重载连接运算符+

示例代码

代码语言:txt
复制
class Vector {
  final int x;
  final int y;

  Vector(this.x, this.y);

  Vector operator +(Vector other) {
    return Vector(x + other.x, y + other.y);
  }

  @override
  String toString() {
    return 'Vector($x, $y)';
  }
}

void main() {
  var v1 = Vector(2, 3);
  var v2 = Vector(4, 5);
  print(v1 + v2); // 输出: Vector(6, 8)
}

参考链接

通过上述示例,可以看到如何重载加法运算符+来实现两个向量对象的相加操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券