浅谈C++的面向对象

Water 因为我开学了,刚好学到了,琢磨了一下,有点理解,然后水一篇,应该没什么人看~ 正题 在C++里,面向对象只和一个叫class的关键字有关系 例如 #include <string> class student() { private: string name; // 神了这里居然没变色 int age; int score; public: ... ... }; 上面这段代码就是利用class关键字来创建了一个名为student的对象,这个对象中的私有变量private包含了name,age,score这三个变量,私有变量就类似于一个可以随时更改的值,你只需要把你想要的值写入,就可以直接替换这三个私有变量代表的值,只需要写在主函数中 lass student { private: // 私有成员变量 string name; int age; int score; public: // 函数 student(string n,int a, int s) { name = n; age = a; score = s; } void info() { cout << "NAME " << name << endl; cout << "AGE " << age << endl; cout << "SCORE " << score << endl; } void set_score(int s) { if (s >= 0 && s <= 100) { score = s; } else { cout << "ERROR!!!"<< endl; } } int get_score() { return score; } }; int main() { student stu1("LiMing", 20, 50); // 看这里! cout << "INFO:\n"; stu1.info(); } 说人话就是,你可以在class里定义一个变量,就和在主函数中直接定义一样,但是可以直接在主函数中赋值给这些私有变量 面对两个象 面向对象可以理解为,你要干什么都可以直接在你写的class里面找,例如我把三角新的周长公式和三角形的面积公式同时写到public里,就可以直接在主函数里为三角形的三边赋值然后一对二进行输出两个内容 #inclde <math.h> #inclde <iostream> class math { private: int side_1; int side_2; int side_3; public: math(int s1,int s2,int s3) { side_1 = s1; side_2 = s2; side_3 = s3; } int triaArea() { int area; int p; p = (side_1 + side_2 + side_3)/2; area = (p*(p - side_1)*(p - side_2)*(p - side_3)); return sqrt(area); } int triaLength() { int length; length = side_1 + side_2 + side_3; return length; } }; int main() { math Gra2(3,4,5); // 面向三角形 int area = Gra2.triaArea(); int length_t = Gra2.triaLength(); std::cout << area << std::endl; std::cout << length_t << std::endl; } 总结 所以面向对象可以理解为 1.数据+功能 = 类 (private + public = class) 2.用类创造的叫对象 (class student = 创建对象) 2.对象封装,只留接口(side_1/2/3和name,score,age的变量名都是不可以更改的,但是参数是可以改的,参数就是接口) 4.多合一,一个类可以处理很多事情(area + length = class) 5.管理方便,逻辑清晰,看着舒服 ...

2026年4月16日 · 2 分钟 · ChenShang

Rust初探——二叉树的增减和遍历

Rust 简介 实际上自己接触 Rust 的时间还是很有限的,这里也不会对 Rust 进行长篇大论地介绍,简单来说,Rust 是一个性能和 c++ 相近的系统级编程语言,同时,由于其所有权与变量生命周期等机制的设计,使其相对于 c++ 来说拥有内存安全的优势,几乎不会出现诸如悬垂指针、数组越界、段错误等问题,在微软、百度、字节跳动等公司均有所使用。 关于 Rust 的特性以及未来,知乎这个问题中的一些高赞回答以及相关的评论,非常值得一看。 本文会以二叉树这样一个具体的例子出发,来对 Rust 的一部分知识内容进行学习。 实现二叉树数据结构 定义结构 之前在 Javascript 等语言中,我们只要对对象有所了解,实现一个二叉树的数据结构是非常简单的事情,而在 Rust 中,可能对于新手来说仅仅是实现基本的数据结构就是一个比较脑壳疼的事情。 我们一般会写出类似这样的代码: struct Tree { value: i32, left: Tree, // 直接使用 Tree 是不行的 right: Tree } 自然不会通过 Rust 的编译检查,会报错例如:recursive type has infinite size,不过其同时给我们提供了解决方案,这里我们使用 Box<T> 指针。 另外,考虑到二叉树的左右子树可能为空,所以这里我们还需要增加一个 Option。 最终我们的二叉树数据结构定义如下: #[derive(Debug, Default)] struct Tree { value: i32, left: Option<Box<Tree>>, right: Option<Box<Tree>> } 实现基本的方法 这里我们实现一些二叉树的基本的方法,作为上述结构体的方法,我们将实现以下方法: 获取二叉树节点的值(其实也可以没有这个方法)。 修改二叉树节点的值。 设置子树。 删除子树。 这里除了第一个,其余我们都需要传递 self 的可变引用,我们的实现如下: ...

2021年5月22日 · 3 分钟 · ChenShang

国产linux操作系统deepin

Linux 说起Linux,你一定会联想到一只傻傻的企鹅坐在空气上。 就在快要过去的2020年,linux29岁了。对29了。很明显,我这次文章的目的不是为了解密这只企鹅为什么可以坐在空气上。现在,进入正题。 linux,又叫 GNU/linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、oracle linux 等。 系统简史 Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:Unix 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和 Internet 网络。 20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有 Unix、DOS 和 MacOS 这几种。Unix 价格昂贵,不能运行于PC;DOS 显得简陋,且源代码被软件厂商严格保密;MacOS 是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要着一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人 Andrew S. Tanenbaum 编写了一个操作系统,名为 MINIX,为了向学生讲述操作系统内部工作原理。MINIX 虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研 MINIX 源代码来了解电脑里运行的 MINIX 操作系统,芬兰赫尔辛基大学大学二年级的学生 Linus Torvalds 就是其中一个,在吸收了 MINIX 精华的基础上,Linus 于1991年写出了属于自己的 Linux 操作系统,版本为 Linux 0.01,是 Linux 时代开始的标志。他利用 Unix 的核心,去除繁杂的核心程序,改写成适用于一般计算机的 x86 系统,并放在网络上供大家下载,1994年推出完整的核心 Version 1.0,至此,Linux 逐渐成为功能完善、稳定的操作系统,并被广泛使用。 ...

2020年12月13日 · 2 分钟 · ChenShang