上篇《白话C++编程系列之十七 结构体篇》, 我们一起学习了什么是C++中的结构体.
现在来回顾一下吧!^_^
结构体一个包含数据和对其数据进行操作的数据结构.
就像生活中冰箱这个结构实体, 冰箱的长,宽,高, 容量, 保鲜柜和冷藏柜等等, 这些都是冰箱的数据, 同时放在冰箱中的肉类,水果,蔬菜,牛奶,饭菜,冰棒1.05,汽水, 也是冰箱中的数据, 对这些数据进行操作的是冰箱的冷藏,冷冻,保鲜…
说的和雪一样白了就是 把要数据和操作放在一块…因为这样好找,好操作.
想想没有冰箱之前, 想冷藏,保鲜东西, 都是借助什么的? 这样你会知道把数据和操作放在一起的好处了.
说的粗俗一点儿, 当你到厕所上个大号的后, 结果发现手纸在另外一个房间… 这里你要处理的数据就是臭臭, 而你的操作就是把臭臭擦掉…
而通常我们的做法是, 把手纸就放在厕所中, 当要用的时候直接就用了(操作和数据放在一起),而不必到另外的地方,另外的房间去找.
为什么上节的内容我却给大家继续啰嗦这么多的例子呢? 因为, 今天我们要学习的是类, 它和结构体几乎一样, 只有唯一的区别…
结构体中 默认访问性为公有(public),而
类中 默认访问性为私有(private).
因此大家在学习类的过程中, 可以返回到结构体中去查看, 适用于结构体的内容同样适用于类, 反之亦然也!!!
结构体的内容,大家可打开《白话C++编程系列之十七 结构体篇》进行复习.
1. 类是个什么东西?
其实类不是个东西….
硬生生生动的来说, 你可以把它想像成自然语言中的同类, 一群具体有相同特征(共性)的东东
比如:
人类: 不是鸟类. 人类有人类的特征, 比如会说话, 有语言, 能直立行走, 会制造工具, 不会飞…
鸟类: 不是人类. 会飞,不会制造工具, 会吃虫子 等等..
鸟人: 好吧… 是人…但是可以飞… 他们也是一类.
男人: 一类… 都有相同的特征..比如帅…的没法比喻…
女人: 一类. 都有相同的特征… 都有四大美女的特征…
其实最本质的相同点和不同点, 男人,女人, 我想你都懂得… 我没必要废话…
1.类一个包含数据和对其数据进行操作的数据结构.
这个结构可以想像成一个容器(冰箱), 里面可以放数据(水果,蔬菜…)
冰箱放水果
数据
就像上面举的例子, 水果,蔬菜,冰棒8.88, 肉都是数据.
操作
收纳, 保存, 保鲜 等等, 都是施加到数据上的操作.
2.类可以想像成是对一类,同类(共性)的东西的一个抽象(提炼)
一类:
比如男人是一类,
孩子是一类
鱼类是一类
Android手机
iPhone手机
mobike, ofo是一类
等等, 因为上面的例子具有相同的特征…
抽象:(提炼)
提炼出他们的共性, 然后进行处理.(操作)
比如人类的共性: 会直接行走, 不会飞, 会制造工具, 有语言等等
以及其他的共性: 比如: 身高, 体重, 肤色, 年龄, 性别等等
对这些共性的操作:
统计身高,体重, 肤色, 年龄, 性别
计算最高的身高, 黑色皮肤的人, 儿童有多少个? 女性比例为多少? 小男孩的比例是多少? 有多少高龄的老头子? 等等…
C++中的类的关键字是:
比如 声明 一个 007 的类.
定义一个复杂一点儿 007类: 只有数据
再来一个更丰富多彩的007.
数据和操作都有了.^_^
2. 类的例子(举例)?
在类是什么东西中,我们已经给它的声明, 定义和例子,现在来个更完整的例子…
当然现在class007这个类还在不断成长壮大, 因此期待您的丰富的声明和定义!
让class007这个类更精彩,更完整,更壮大!…
//这次给出声明和具体实现
007类程序运行图:
这里必须得啰嗦一下了, 因为有几个重要的概念要搞一搞, 不搞难受的不行.
构造函数
构造函数: 就是在生成这个类的对象时, C++自动,最先要帮你执行的函数(代码).
你一定会想到, 对了, 这里其实是要做类中数据的初始化的事情.
这里的自动是指, 你只要写在那里就好,C++会去默默在幕后执行它的.
这里的最先执行, 是指最开始执行的意思. 也就是说, 会在你所有其它操作(你自己定义的函数及调用)之前来执行.
这里的初始化主要是给类中的数据设置默认值.
比如: 冰箱这个类(一类冰箱), 可能初始化时, 初始化它的容量, 长宽高, 颜色, 耗能等等数据
构造函数长的样子,主要是它和类名相同, 参数可能会有所不同. 因此会有默认构造函数, 和复制(拷贝)构造函数.
比如我们声明一个冰箱类:
析构函数
析构函数: 就是C++自动负责清理,打扫数据的最后被执行的函数(代码).
这特别类似,当你搬家离开时租房的地方时, 你得帮助把这个曾经住过的房子清理一下卫生或者其它需要清理的东西.
当然我们这里主要是清理数据.
以冰箱为例:
当你打算砸了(或者坏了,或者卖了)它的时候(假如…), (冰箱是容器, 就是数据结构)
我们一定会说,把冰箱中的东西(鱼肉蛋奶)全拿出来,清理一下冰箱, 因为你不拿出来, 当冰箱没电了的时候, 这些东西全都要坏了,变质了.
C++中的的析构函数, 就是这个清理工, 它帮助我们清理不再需要的数据, 将这些数据占用的计算机内存空间,再还给操作系统, 留给其它程序使用.
因为计算机的任何资源都是有限的, 不能让个别程序占着茅坑不拉屎, 如果都占着, 别的程序还不都得憋死?!
3. 践行class
动手实践吧!
现在打开您安装的vs2013( or open http://cpp.sh)敲入文章中上面的代码, 或您想声明,定义的类.
按F5或者点击网站上的run按钮, 欣赏下您的劳动成果吧. 哈哈!
恭喜您, 学会和践行了C++中最重要的 面向对象方法和其杰出代表:class
C++之所以被是面向对象语言,主要就是类的功劳呀.
完整的代码如下:
代码抓图:
怎么样? 很简单吧?
Here you defined your ownclass.
你可以声明, 定义更多的类…
小结:
类是啥?
类一个包含数据和对其数据进行操作的数据结构.
类(例子)
践行类
Any ideas?请随时在文章留言区留言或者直接联系我 ^_^
白话C++编程系列之:下期预告
白话C++编程系列之十八: 类(二)
领取专属 10元无门槛券
私享最新 技术干货