美文网首页
326,Kotlin-运算符重载(operator)

326,Kotlin-运算符重载(operator)

作者: 枫叶1234 | 来源:发表于2020-10-17 09:24 被阅读0次

1、定义

运算符重载就是对已有的运算符赋予他们新的含义。重载的修饰符是operator

比如我们的+号,它的含义是两个数值相加:1+1=2。+ 号对应的函数名是plus

然后对+号这个函数进行重载,可以让它可以实现减法的效果。

这里我们实现了一个Person数据类,然后重载了Int的 + 号运算符,让一个Int对象可以直接和Person对象相加。返回的结果是这个Int对象减去Person对象的age的值所返回的的Int值。

data class Person(var name: String, var age: Int)
 
operator fun Int.plus(b: Person): Int {
    return this - b.age
}
 
fun main() {
 
    val person1 = Person("A", 3)
 
    val testInt = 5
 
    println("testInt+person1=${testInt +person1}")
}
//输出结果
testInt+person1=2
 

2、原理

运算符重载实际上是函数重载,本质上是对运算符函数的调用,从运算符到对应函数的映射过程由编译器完成

3、作用

给我们的类提供一些自己定义的操作运算符。

比如:我们定义了Person的数据类,然后我们重载+号运算符,让我们的Person对象可以直接调用+号来做一些函数操作。

这里我们重载了plus()函数,也就是+号,然后让它实现了两个Person相加的时候,让他们的name和age互相相加,然后返回一个新的Person对象。

data class Person(var name: String, var age: Int){
    operator fun plus(other:Person):Person{
         return Person(this.name+"+"+other.name,this.age+other.age)
    }
}
fun main() {
 
    var person1=Person("A",3)
    var person2=Person("B",4)
    var person3=person1+person2
    println("person3=$person3")
}
 
//输出结果
person3=Person(name=A+B, age=7)

4、常用的运算符及对应的函数名

4.1一元运算符

表达式 函数名


截屏2020-10-17 上午9.21.44.png

4.2、二元运算符

截屏2020-10-17 上午9.21.51.png

4.3、复杂运算符

截屏2020-10-17 上午9.22.00.png

4.4、比较运算符

截屏2020-10-17 上午9.22.07.png

5、注意

截屏2020-10-17 上午9.22.14.png

相关文章

  • 326,Kotlin-运算符重载(operator)

    1、定义 运算符重载就是对已有的运算符赋予他们新的含义。重载的修饰符是operator 比如我们的+号,它的含义是...

  • [Flutter]flutter基础之Dart语言基础(四)

    一、运算符重载 Dart 支持运算符重载,使用 operator 关键字,语法格式为:operator 运算符 ,...

  • 16-高级运算符

    溢出运算符(Overflow Operator) 运算符重载(Operator Overload) Equatab...

  • 2017.9.22

    今天上课主要讲了运算符重载。运算符重载格式:类型名operator运算符(形参表){函数体}operator运算符...

  • Dart语言的运算符重载

    什么是运算符重载(operator overloading) 在软件开发过程中,运算符重载(英语:operator...

  • 9月22日C++学习总结

    1.运算符重载:运算符重载的格式为:类型名 operator 运算符(形参表){函数体},operator是关键字...

  • 2017.9.22

    今天学习的是运算符的重载: 运算符重载: 使用运算符重载的一般格式为: 类型名 operator 运算符(形参表...

  • C++基础-(重载)

    C++基础 重载 哪些运算符可以被重载:::,.,->,*,?:不能被重载 重载操作符的标志(operator) ...

  • 5.1运算符重载

    运算符重载的格式为: 返回值类型 operator 运算符名称 (形参表列){ //TODO: } 将运算符重载函...

  • [陈宗权C++]C++第4天PM--运算符重载

    参考: 重点: 智能指针模拟,计数器运算符重载 operator-> operator* ++a ,a++,--a...

网友评论

      本文标题:326,Kotlin-运算符重载(operator)

      本文链接:https://www.haomeiwen.com/subject/edexmktx.html