美文网首页
Rust for cpp devs - 面对对象

Rust for cpp devs - 面对对象

作者: 找不到工作 | 来源:发表于2021-05-23 11:40 被阅读0次

面对对象编程有三个特点:

  • 对象
  • 封装
  • 继承

Rust 中的对象

根据设计模式圣经“四人帮”的定义:

Object-oriented programs are made up of objects. An object packages both data and the procedures that operate on that data. The procedures are typically called methods or operations.

Rust 中的 struct 定义了数据,impl 为这些数据定义了操作,因此 Rust 是支持对象的。

Rust 中的封装

封装的定义是调用者只能通过公共 API 访问对象。

在 Rust 中,我们使用 pub 来决定哪些代码是开放给外界调用的。因此 Rust 支持封装

Rust 中的继承

继承是指一种沿用父类型的数据、行为而不需要再次定义的方式。

Rust 并不支持继承。一个struct 无法继承另一个 struct 的数据成员和方法。

作为替代方案,我们可以用 default trait 定义公共的行为,任何 struct 可以通过 impl 这个 trait 来使用这个默认方法,也可以重写。

此外,继承还有个功能是多态 (polymorphism)。Rust 使用泛型和 trait 来实现类似的功能,具体在另一章介绍。

相关文章

  • Rust for cpp devs - 面对对象

    面对对象编程有三个特点: 对象 封装 继承 Rust 中的对象 根据设计模式圣经“四人帮”的定义: Object-...

  • Rust for cpp devs - 线程

    由于 Rust 特有的 ownership 和类型检查机制,许多并发问题都可以在编译期发现,这极大地降低了风险以及...

  • Rust for cpp devs - mutex

    除了 channel[https://www.jianshu.com/p/925d3534ac7f],我们也可以通...

  • Rust for cpp devs - Ownership

    编程语言的内存管理一般有两种: 带垃圾回收机制的,如 Java,Golang,会在运行时检查不再使用的内存并回收,...

  • Rust for cpp devs - channel

    与 golang 一样,Rust 也实现了 channel 用于线程间的通信。如同 golang 的口号一样: D...

  • Rust for cpp devs - closure

    类似于 cpp 中的 lambda 表达式,Rust 中也有 closure。他们与普通函数的区别在于可以捕获变量...

  • Rust for cpp devs - Generic Type

    类似于 cpp,Rust 中也有泛型(generics),用于避免重复的代码。此外,还可以指定 traits 来限...

  • Rust for cpp devs - 迭代器

    迭代器(Iterator)可以允许对序列中的每一个元素执行某个操作。 Rust 的迭代器分为三种: iter() ...

  • Rust for cpp devs - minigrep 项目

    官方文档用 minigrep 项目来讲解如何组织一个 Rust 项目。 保持 main 函数简洁 这样做的好处是:...

  • Rust for cpp devs - 错误处理

    Rust 将软件中的错误分为两个类型:可恢复错误和不可恢复错误。 对于可恢复错误,例如文件找不到,可以报告给调用者...

网友评论

      本文标题:Rust for cpp devs - 面对对象

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