首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

笔记四:C+类通俗点说——C结构体复习

核心:

C++的类就是对C语言的结构体进行了扩展,C++的结构体可以包含函数!

该资料为C++初学者整理,知识层次较低,大神可以路过,当然也可以留下来给我们指点迷津!万分感激!

该资料需要读者具备一定的C语言编程基础!

我们正在学习C++,所以从一个初学者的角度去把握用怎样的切入点能让初学者看得过瘾,学的通透!我们自己呢也从这个过程中去找漏洞,提升编程能力,这将不是一个知识的迁移过程,而是一个初学者与初学者的交流过程,所以我们的资料中有表述不准确的地方,还请读者能够指正!我们万分感激!

1

我们学习C++为什么要复习C语言结构体呢?

在我看过的对C++进行讲述的教材中,开篇往往是两个字“对象”!因为C语言是面向过程的,而C++特色是面向对象!所以大多数书籍最开始就在说面向对象的事情。

但我在最初学习的过程中发现自己对“对象”这个词汇....总是想偏,对这个词汇云里雾里的,什么叫面向对象啊,看了一通没看懂。所以我们先不深究什么叫面向对象。

我们先来略看一下C语言中的结构体。对于这个大家应该是很熟悉的,如果对C语言结构体的概念有模糊,请自行查阅资料。

2

C语言结构体

在C语言编程中,我们定义自己的身高,可以用整型int变量,定义一家人(比如三口人)的身高,可以用int型数组。

如果我们要表示王者荣耀游戏中各个英雄的姓名、身高(单位cm)、体重(单位kg),这三种并不是同一类型的数据,那我们就用到结构体了。

struct hero

{

unsigned char name[10];

int height;

float weight;

};

struct hero LuBan; //定义“LuBan”变量

结构体或称结构,就像int、float等基本类型一样,也是一种数据类型,使用户自己定义的,它允许存储不同类型的数据项,就像上面的hero结构体。就像打包封装,把一些有共同特征(上面的身高体重等都属于同一个英雄)的变量封装到内部,通过一定的方法访问和修改这些内部变量。

关于更多的结构体的知识我们这里不多说。

我们在结构体内部定义了一些变量,看到“LuBan”这个结构,我们就能查找到他的身高、体重等数据。

3

函数

鲁班英雄具有“河豚手雷”这个技能,就像炒菜一样,油、盐、菜、蛋...出锅!这样一个顺序就完成了一道美食,鲁班也是用一个顺序完成了这个技能。左闪、右躲...杀!

这就是一个函数。

一个变量定义了一个英雄的角色性质,一个函数定义了一个英雄的大招使用过程!所以C语言的面向过程很好理解。

这个鲁班我们就可以叫做一个对象!他的身高、体重等这些变量我们称之为“属性”或者“状态”,他具有的大招(能干什么)我们称之为“行为”。

就像鲁班七号,这个英雄有姓名、性别、身高、体重等这些“数量”,也就是变量=属性=状态;他可以吃饭、睡觉、打怪,这些行为=函数。所以,我们就叫C语言中的变量为“属性”或“状态”,C语言中的函数称为“行为”。

4

从结构到类

在C语言的结构体定义中,我们只是把变量放到了结构体中,而C++的类就是对C语言的结构体进行了扩展,C++的结构体可以包含函数!

举个栗子:

struct hero

{

//属性

unsigned char name[10];

int height;

float weight;

//行为

void eat()

//仅做说明

void sleep()

void KillMonsters()

}; //分号

struct hero LuBan; //定义“LuBan”变量

调用:

void main()

{

LuBan.height=150;

LuBan.weight=50;

LuBan.KillMonsters();

}

“英雄”这个结构体的成员,与C语言不同,我们既有变量也有函数,变量和函数都属于该结构体,变量叫成员变量,函数叫成员函数。C语言的结构智能描述一个对象的属性,不能描述一个对象的行为。

在面向对象的程序设计中,对象具有属性(状态)和行为,属性保存在成员变量中,行为通过成员方法(函数)来实现。成员方法又是什么?

其实方法和函数可以理解为一回事。只是在C++中“函数”被称之为“方法”。

5

C++类的定义

前面看明白了,这个地方就不多说话!

将结构体定义中的关键字struct换成class,就得到了C++中类的定义。

class Hero //类名习惯首字母大写

{

//属性

unsigned char name[10];

int height;

float weight;

//行为

void eat()

//仅做说明

void sleep()

void KillMonsters()

}; //分号

用类定义的就叫对象。

Hero LuBan; //定义了一个Hero类的对象LuBan

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208G01VML00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券