C++自学第二课:对象和类的概念

既然是C++,比C语言多了最重要的概念:面向对象。

面向对象?对象是什么?Girlfriend? 我天天面向她也没学会C++。

我觉得对象就是有统一特征的一类编程目标。

打个比方说墙上有个开关,我一按,天花板上的灯亮了。

这个开关就是我要面向的对象,我要把这开关前面的样子和后面的内容设计出来,设计好之后批量生产,功能是一样的。

别人要让这个灯亮,买个开关来安上就行,不用重新再设计生产。

类似的灯泡也是对象,输入合适的电流它能亮,断掉电流就不亮,再输入再亮。

电脑的作用就是模拟现实世界,所以表达这个电路操作也是用编程模拟,设计虚拟的开关和灯泡这两个对象,再把它们的相互关系连接起来。

下面我们再举例来建立一个类来说明。

class Box

{ public:

double length; // 盒子的长度

double breadth; // 盒子的宽度

double height; // 盒子的高度

};

上面我们建立了一个名字叫Box的类,它有三个公共数据成员:长、宽、高;

这种公共数据成员用“public:”来声明,可以被别的程序引用。将来我们还会碰到与之相对应的私有和保护成员。

我们看到声明类的格式与前面学到的函数的声明有类似之处,也有大括号,但没有形参,最前面的数据类型用“class”代替了。

是的,程序把函数和类都看成是一个对象,只是内涵要看后面具体去不同地执行。

但是建立了这个类有什么用?我们要再用函数来引用它。

我们用一个计算两个立方体的体积的例子来说明:

前面两行是程序头文件,说来话长,我们先不管它。

然后是前面说过的Box类的声明,继续往下;

后面是一个名字叫main的主函数,数据类型是整数,没有形参,后面大括号包起的部分就是函数的功能。主函数都是这样的,其他功能包含在主函数内部。

Box Box1 什么意思?

前面不是声明了Box类吗,这里就算引用了,再声明一个Box1,它就是一个Box,它的种类是Box,包含Box的全部三个特性,但它是Box里特指的一个。

Box2是类似的。

还声明了变量:volumn体积,初始值为0,Double是一种数值可以很大的小数,可以容纳很大的体积数值。

下面:

Box1.Height=5.0;

把Box1的高设成5.0;

这不是声明了,因为Box1和Height都已经声明过了,这是赋值;

小数点“.”你可以直接读成“的”,因为它就表示后面的从属于前面。

volume = Box1.height * Box1.length * Box1.breadth;

体积等于Box1的高、长和宽的乘积

这也是赋值,将一个表达式赋给一个变量。

cout << "Box1 的体积:" << volume <<endl;

cout <<把后面的内容输出到屏幕; "Box1 的体积:" 双引号扩起的部分表示是字符串文本;volume是变量,因此程序就会求出它现在的值显示出来;endl结束此行并换行,让下次输出的值从下一行开始使输出易读。

return 0;返回0;

这个返回值并不显示,而是回应函数头的int整数数据类型。

最后以大括号结束。

Box2也同理。

但编程语言的思路和实际程序设计的思路还是相反的,倒过来看才能明白主干。

这个例子中,我们想要实现的目的是:输出立方体的体积,

所以最后的语句是要输出的内容;

输出内容有一个体积变量需要声明,声明它的名称、数据类型、求解方法。

求解方法引出立方体Box、长、宽、高。长、宽、高都是立方体Box的属性,因此定义一个Box类,包含这三个属性;

再分别装入两个Box的数据,就可以了。

从这个例子我们学习了建立类和对象的基本概念,不过我们还看不太出带来的效率提升,随着程序规模的扩大,它的优势才会逐渐显现。

原文地址:https://www.cnblogs.com/thomason/p/10322608.html

时间: 2024-10-11 08:35:54

C++自学第二课:对象和类的概念的相关文章

4.2-全栈Java笔记:对象和类的概念及定义

对象和类的概念 我们人认识世界,其实就是面向对象的.大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊.比如现在让大家认识一下"天使"这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了. 但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程. 小时候,我们学自然数时怎么定义的?像1

Java第二章----对象和类

从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对象 名词解释 OOA-Object Oriented Analysis-面向对象分析 OOD-Object Oriented Design-面向对象设计 OOP-Object Oriented Programming-面向对象程序设计 面向对象基本特性 万物皆可为对象:任何一件事物都可以表示为程序中

wxWidgets第二课 DECLARE_NO_COPY_CLASS 禁止类的拷贝

说明 在defs.h文件中,对该宏进行了如下的定义 #define DECLARE_NO_COPY_CLASS(classname) \ wxDECLARE_NO_COPY_CLASS(classname); 而wxDECLARE_NO_COPY_CLASS的实际定义如下: #define wxDECLARE_NO_COPY_CLASS(classname)      \ private:                                    \ classname(const

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

JavaFX战旗类游戏开发 第二课 游戏地图绘制

在上一节课中,我们对即将要完成的战旗Demo有了一个大概的了解,本节课当中,我们将会学习绘制游戏地图. 自从在JavaFX 2.2中增加了Canvas相关的功能,我们就可以使用Canvas来实现游戏绘制了. 游戏地图绘制主要用到GraphicsContext.drawImage方法. drawImage(Image image,double sx,double sy,double sw,double sh,double dx,double dy,double dw,double dh); 其中i

第二课:IOS(App)UIImage控件与TextField控件学习

作为一名实习生我是1.3.5在办公室工作,2.4.6去另一个地方听课学习IOS(app)课程,为了不落下课程,我准备每天晚上把落下的课程自学一遍,把不懂的记下等去听课的时候问老师,希望自己能跟上学习的步伐,不浪费时间.这一课是前几天听的,今天一起也写上了. 第二课:IOS(App)UIImage控件与TextField控件的学习,代码如下 一:UIImage控件代码:把图片添加到视图中并设置大小,这里没有牵涉到图片背景的颜色设置,我猜想应该是没必要去设置的吧,因为没有按钮功能的话背景颜色也看不到

ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式 1.说明: ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHP.URL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用. url的4种访问方式: 1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 2.普通模式 http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

第二课 (4)方法的实现

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. 以这段代码为例 -   (void)   viewDidLoad 返回值    方法名字 加号 VS 减号 类对象 VS 实例对象 有些方法只能类对象调用(+) 有些方法只能实例对象调用(-) 类对象可以调用的方法 叫做类方法Class Method 实例对象可以调用的方法 叫做实例方法 Instance Me

管理者的角色修炼-第二课总结

一.前言 第二课历时两天,主要讲了团队从招人到高绩效的各个阶段的特征,有什么问题,如何解决!结合我自己的亲身经历,反思后印证着去看,还是很有收获. 二.开场的一件小事 第二课换了一个有着男性名字的女老师,其实大家对老师的男女没什么太多的想法.但老师在开场做自我介绍后,大家对其的第一印象和行为就出现了比第一课老师不一样的东西. 问题就出在这个自我介绍上.老师介绍完的自己的名字后,说其有20多年的工作经验了:08年之前在一个外企工作,这中间,正好遇上了奥运会需要培训3000名员工和志愿者:这之后,跳