目录
一、小例子
首先在学习类相关知识之前先来了解一下与类相关的小故事
最近不是双11嘛,大家都会在网上购物,购买自己需要的喜欢的东西,付款下单,商家就会接收到你买的东西和你的相关信息(地址电话等),然后给你发货,快递公司进行运送,此时你也会收到快递信息,然后拿快递,这就是一个购物的过程,类似的还有点外卖,网上打车等一系列事情,我们就可以将生活中每一件事情当作成一个类,每个类里面就会出现相关的人物,把他称为类的成员,人物之间的联系就称为类的成员方法
从购物这件事情中,我们可以简单把过程分为购物者下单,商家发货,快递公司运送和购物者收货这四个过程,同时这里出现的人物大致就有购物者,商家和快递公司,那么购物这件事就是一个类,类里面的成员就是购物者,商家和快递公司,那购物者下单,商家接收到购物者下单的商品信息,让发货快递公司发货,快递公司又把快递信息给商家和购物者,购物者根据信息拿到货等等三者之间的联系方法我们就称为类的成员方法
生活中还有许许多多的事情,事情中就会出现相关的成员,成员之间就会有联系,所以每个事情就是一个类,成员就是类的成员,联系就是类的成员方法
二、类的介绍
1.类的概念
首先我们要知道C语言是基于面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题,而C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成,比如送外卖对于C语言来说只在乎这个外卖怎么送到客户手上,不在乎这个过程中出现的对象,而C++在乎的是送外卖这个过程出现了哪些对象(客户,商家,骑手),在乎的是对象之间的联系
类在这里可以简单的理解就是一件事情为一个类,类中对事情发生中出现的对象和对象之间的联系进行封装;可以理解为一个工程为一个类,类中对工程所涉及到的对象和对象之间的联系进行封装。
类是指将有一定联系(都与你要实现的类有关)的对象聚集在一起 --> 这些对象就被称为类的成员变量 --> 变量
并且将对象之间联系的方法聚集在一起 --> 这些方法就被称为类的成员函数 --> 函数
最后将对象和方法一起进行封装 --> 这就被称为类
2.类的定义
class是用来定义类的关键字,使用方法如下
class Date //class关键字+类名
{....... //变量和函数
};
三、访问限定符
1.访问限定符的出现
在类中,通常可以定义成员和成员方法,这些成员和函数(方法)可能又具有不同的属性,例如有些成员可以被查看,有些却不能,这个时候就出现了访问限定符,用来修饰成员和函数的属性
2.访问限定符的分类
访问限定符分为以下三种:
- 公有--关键字->pubilic
- 私有--关键字->private
- 保护--关键字->protected
3.访问限定符的使用
//类里面
{
pubilic://访问限定符关键字 + ' : '
};
4.访问限定符的介绍说明
(1)被pubilic修饰的表示在类外可以访问的数据
(2)被private和protected修饰的表示在类外不可以访问的数据
(3)访问限定符的作用域是从该限定符声明起到下一个限定符定义时结束
四、类的作用域
类定义出一个新的作用域,将类中的变量和函数的作用域全部限定在类里,和前面的命名空间限定作用域相似。
值得注意的是在类中变量和函数的创建顺序不影响使用,即使我的变量和函数在使用之后定义都可以使用,函数也不需要提前声明。
如果想要在外部定义类的成员时,需要使用类名+" :: "标识符来表明这个成员属于哪个类域
{...}; //类外,类名为Date
void Date::Print(){...} 在函数名前加上类名+" :: "
五 、类的成员的使用方法
Date.Print(传值);
Date._year = (传值);//使用方法:类名 + ' . ' + 成员名 ,和结构体调用相同
六、struct关键字与class关键字
1.struct关键字
在C语言中的struct关键字是只能定义结构体的,而在C++中struct关键字既可以用来定义结构体,又可以定义类,定义方法和类的定义方法类似(就把struct当class用,注意外部默认属性就行)
2.struct关键字和class关键字定义的类的区别
struct关键字定义出的类的外界默认访问属性是公有的,而class关键字定义出的类的外界默认访问是私有的,这是因为sturct是C语言的关键字,用于创建结构体的,结构体的默认外部访问属性是公有的,C++兼容了C语言,需要的保留C语言的struct的外部访问属性,所以说是公有的。
3.struct定义出的类型的使用方法
struct Date S1 //使用结构体类型实例化出对象
Date S2 //使用结构体类型实例化出对象
结论:在C++中可以使用不带结构体关键字struct的类型名(Date)创建对象,即使用类型名(Date)创建对象,而且这两种方法都适用。
加油!!!