OOP基本概念对比:RUST与CPP

这篇博客探讨了Rust和C++在面向对象编程(OOP)中的基本概念差异,包括对象封装、继承和多态。在封装方面,C++使用public和private关键字,而Rust中所有成员默认为private,需要使用pub关键字公开。对于继承,文章介绍了C++的函数重载、虚函数重写和非虚函数重定义,以及Rust通过Trait实现接口的继承和重写。多态部分讨论了C++的虚函数和Rust的Trait,强调Rust不支持函数重载,但可以通过泛型、tuple和Trait组合实现类似功能。最后,文章阐述了在C++中利用虚函数进行统一接口调用,而在Rust中,需借助Trait对象实现相同目的。
摘要由CSDN通过智能技术生成

对象封装

一般来说,一个对象,具有如下性质:

  • 一个区别于其他对象的名字
  • 若干个属性(数据,或字段)
  • 若干个行为(函数,或方法)

在C++中,使用public和private关键字来暴露或者保护对象内部的实现

//C++
#include <iostream>
#include <string>
using namespace std;
//类定义
class Person
{
   
public:
    Person(string&& name,int salary) : name(name), salary(salary) {
   };
public://公共字段
    string name;//公共属性
    void SayHi() {
    cout << name << ":hi" <<endl; };//公共方法
private://私有字段
    int salary;//私有属性
    void Sleep() {
    cout << "sleep"; };//私有方法
};
int main()
{
   
    //在栈上创建对象
    Person bobFromStack("Bob",233);
    //在堆上创建对象
    auto pAliceFromheap = new Person("Alice",234);
    bobFromStack.SayHi();
    pAliceFromheap->SayHi();
    system("pause");
    return 0;
}

在Rust中,所有名字默认是private的,只能在当前文件中访问,如果要将名字暴露给外部,需要使用pub关键字

路径用于引用模块树中的项 - Rust 程序设计语言 中文版 (rustwiki.org)

//Rust
pub struct Person {
   //导出结构体名
  pub name:String,//可供其他模块访问的公共字段
  salary:i32,//仅能在本文件中访问的私有字段
}

impl Person {
   //为结构体实现方法
  pub fn SayHi(&self) {
   //可供其他模块访问的公共方法
      println!("{}:Hi",self.name);
  }
  fn Sleep(&self){
   //仅能在本文件中访问的私有方法
    println!("Sleep");
  }
}

fn main() {
   
  //在栈上创建对象
  let bobFromStack = Person{
   name: String::from("Bob"),salary
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值