网易首页 > 网易号 > 正文 申请入驻

【蓝因子教育】 类(Classes)的定义与实现!C/C++必学知识点!

0
分享至



一、"类" 的介绍

在C++中, 用 "" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。"都有质量"、"两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法

类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法。以 "人类" 这个类来说, 每个人都有自己的姓名、年龄、出生日期、体重等, 为 人类 的属性部分, 此外, 人能够吃饭、睡觉、行走、说话等属于人类所具有的行为。

上面举例中所描述的 "人" 类仅仅是具有人这种对象的最基础的一些属性和行为, 可以称之为人的"基类"。 再说说一些具有一些职业的人, 例如学生, 一个学生还具有"基类"中所没有的属性, 如学校、班级、学号; 也可以具有基类所不具有的行为, 如每天需要去上课, 需要考试等。

学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"派生类"或者"子类"。在学生的基础上海可以进一步的扩展出其他更高级的类, 如"研究生"类。

到此,,我们不再更深的去介绍类的其他相关知识。

二、C++类的定义

C++中使用关键字class来定义类, 其基本形式如下:



①. 类名 需要遵循一般的命名规则;

②.publicprivate为属性/方法限制的关键字, private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本类内部访问; 而 public 表示公开的属性和方法, 外界可以直接访问或者调用。

一般来说类的属性成员都应设置为private, public只留给那些被外界用来调用的函数接口, 但这并非是强制规定, 可以根据需要进行调整;

③. 结束部分的分号不能省略。

类定义示例:

定义一个点(Point)类, 具有以下属性和方法:

■ 属性: x坐标, y坐标

■ 方法: 1.设置x,y的坐标值; 2.输出坐标的信息。

实现代码如下:



代码说明:

上段代码中定义了一个名为 Point 的类, 具有两个私密属性, int型的xPos和yPos, 分别用来表示x点和y点。在方法上,setPoint用来设置属性, 也就是 xPos 和 yPos 的值;printPoint用来输出点的信息。

类在定义时有以下几点需要注意:

①.类的数据成员中不能使用 auto、extern和register等进行修饰, 也不能在定义时进行初始化, 如int xPos = 0; //错;

②.类定义时 private 和 public 关键词出现的顺序和次数可以是任意的;

③.结束时的分号不能省略, 切记!

三、C++类的实现

在上面的定义示例中我们只是定义了这个类的一些属性和方法声明, 并没有去实现它, 类的实现就是完成其方法的过程。类的实现有两种方式, 一种是在类定义时完成对成员函数的定义, 另一种是在类定义的外部进行完成。

1>. 在类定义时定义成员函数

成员函数的实现可以在类定义时同时完成, 如代码:



运行输出:



与类的定义相比, 在类内实现成员函数不再是在类内进行声明, 而是直接将函数进行定义, 在类中定义成员函数时, 编译器默认会争取将其定义为inline型函数。

2>. 在类外定义成员函数

在类外定义成员函数通过在类内进行声明, 然后在类外通过作用域操作符::进行实现, 形式如下:

返回类型 类名::成员函数名(参数列表)

将示例中的代码改用类外定义成员函数的代码:



依 setPoint 成员函数来说, 在类内声明的形式为void setPoint(int x, int y);那么在类外对其定义时函数头就应该是void Point::setPoint(int x, int y)这种形式, 其返回类型、成员函数名、参数列表都要与类内声明的形式一致。

四、C++类的使用

将一个类定义并实现后, 就可以用该类来创建对象了, 创建的过程如同 int、char 等基本数据类型声明一个变量一样简单, 例如我们有一个Point类, 要创建一个Point的对象只需要:

Point 对象名;

创建一个类的对象称为该类的实例化, 在创建时我们还可以对对象的属性进行相关的初始化, 这样在创建完成后该对象就已经具有了一定得属性, 这种创建方式将在下一篇博文中进行学习。

将类进行实例化后系统才会根据该对象的实际需要分配一定的存储空间。这样就可以使用该对象来访问或调用该对象所能提供的属性或方法了。

还以上面的代码为例, 为了减少篇幅, 我们把 Point 类的实现放在 Point.h头文件中, 这里不再贴出 Point 类的实现代码。



代码在编译时会出现错误, 提示error: 'int Point::xPos' is private, 这是cout<< M.xPos <

这行造成的, 他试图访问一个 private 对象中的私密数据xPos, 如果将这行去掉便可正常运行。

通过对象名.公有函数名(参数列表);的形式就可以调用该类对象所具有的方法, 通过对象名.公有数据成员;的形式可以访问对象中的数据成员。

五、对象的作用域、可见域与生存周期

类对象的作用域、可见域以及生存周期与普通变量的保持相同, 当对象生存周期结束时对象被自动撤销, 所占用的内存被回收, 需要注意的是, 如果对象的成员函数中有使用new或者malloc申请的动态内存程序不会对其进行释放, 需要我们手动进行清理, 否则会造成内存泄露

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
A股:躺平了,股民不好骗了!监管部门紧急磋商,明天要修复大涨

A股:躺平了,股民不好骗了!监管部门紧急磋商,明天要修复大涨

云姐财说
2025-01-06 14:49:54
六年磨一剑,捷途以“速度”书写“现象级”生长

六年磨一剑,捷途以“速度”书写“现象级”生长

钟叔驾道
2025-01-03 18:05:13
中共中央批准,邓云锋任山东省委常委

中共中央批准,邓云锋任山东省委常委

政知新媒体
2025-01-06 17:41:42
南京理工大学刘崇俊教授去世,年仅42岁,长得帅气,死因细节曝光

南京理工大学刘崇俊教授去世,年仅42岁,长得帅气,死因细节曝光

180°视角
2025-01-06 13:11:43
奥斯卡吐槽中国球员:聚餐就是干杯,喝得太多了,5名老将最职业

奥斯卡吐槽中国球员:聚餐就是干杯,喝得太多了,5名老将最职业

奥拜尔
2025-01-06 13:52:27
高喊“打倒民营经济”的是他,高喊“支持民营经济”的还是他

高喊“打倒民营经济”的是他,高喊“支持民营经济”的还是他

报人刘亚东
2025-01-06 16:44:08
老美害怕了?六代机出现后,美国议员:我们需要和中国和平相处

老美害怕了?六代机出现后,美国议员:我们需要和中国和平相处

派大星纪录片
2025-01-06 16:44:23
为何那么多人认为欧盟强迫劳动法案包藏祸心?我们是加入了条约的

为何那么多人认为欧盟强迫劳动法案包藏祸心?我们是加入了条约的

大风文字
2025-01-06 12:56:11
网红雅典娜为园区老总产下一子后被解救?果然又是潮汕商会

网红雅典娜为园区老总产下一子后被解救?果然又是潮汕商会

垛垛糖
2025-01-06 10:57:47
反转!演员王星进入园区是假消息!业内斥徐大久胡说,曝光实情!

反转!演员王星进入园区是假消息!业内斥徐大久胡说,曝光实情!

古希腊掌管月桂的神
2025-01-06 13:50:58
2025年,个人劳务报酬所得税或将发生调整,税负由40%降至2%

2025年,个人劳务报酬所得税或将发生调整,税负由40%降至2%

税廉
2025-01-06 15:52:26
打破21天沉默,特鲁多辞职,9年任期结束?加拿大新总理已浮现

打破21天沉默,特鲁多辞职,9年任期结束?加拿大新总理已浮现

二向箔
2025-01-06 16:49:42
持续发酵!李明德电影学院的班主任发声,说了4点内容,挺客观的

持续发酵!李明德电影学院的班主任发声,说了4点内容,挺客观的

一群怪咖
2025-01-06 14:59:33
韩国“太上皇”布林肯驾到:结局已定,懒得见尹锡悦最后一面

韩国“太上皇”布林肯驾到:结局已定,懒得见尹锡悦最后一面

二向箔
2025-01-06 14:44:44
演员星星泰缅失联新动态:已被关进妙瓦底园区,总领事馆展开救援

演员星星泰缅失联新动态:已被关进妙瓦底园区,总领事馆展开救援

素素娱乐
2025-01-06 12:14:57
中芯国际的成绩单公布了,简直太讽刺了,这到底打了谁的脸?

中芯国际的成绩单公布了,简直太讽刺了,这到底打了谁的脸?

智观科技
2025-01-05 23:40:08
14万的老头乐!蔚来新车被群嘲,血亏百亿后李斌再次走进死胡同?

14万的老头乐!蔚来新车被群嘲,血亏百亿后李斌再次走进死胡同?

派大星纪录片
2025-01-06 15:04:54
要给中国23万亿?美国部长喊话特朗普,一定不能“割地”给中国!

要给中国23万亿?美国部长喊话特朗普,一定不能“割地”给中国!

派大星纪录片
2025-01-06 15:31:19
美国NASA:三峡大坝造成地球自转轴位移,地球极点位置移动2公分

美国NASA:三峡大坝造成地球自转轴位移,地球极点位置移动2公分

百态人间
2025-01-06 12:01:36
欧洲停产停电停网!乌三天后得到了应有的报应!

欧洲停产停电停网!乌三天后得到了应有的报应!

玲子日记
2025-01-06 15:51:52
2025-01-06 19:39:00
原画在线课堂vv
原画在线课堂vv
一家有温度的原画教育机构
1298文章数 1关注度
往期回顾 全部

科技要闻

国内至少50团队研发AI眼镜 但无核心卖点

头条要闻

中国将修建雅鲁藏布江下游水电工程 外交部回应印关切

头条要闻

中国将修建雅鲁藏布江下游水电工程 外交部回应印关切

体育要闻

阿诺德的心飞到马德里了?

娱乐要闻

星星女友辟谣!还未取得联系

财经要闻

瑞立科密销售模式信披或"偷梁换柱"

汽车要闻

10万元级无图智驾 悦也PLUS全路况实测

态度原创

教育
游戏
艺术
本地
公开课

教育要闻

“父母穷,我连穿羽绒服的自由都没有”,一张羽绒服近照,引热议

《天国:拯救2》全面升级!主角演员工作都更累了

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

本地新闻

云游中国|冰雪“祁”缘照进现实,谁懂多震撼

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版