一.类的定义

类可以”理解成:一种“模板”或“图纸”,用于创建具有相同属性和行为的对象。

“汽车”可以看作一个类。

因为所有汽车都有:

属性(数据)

  • 颜色
  • 品牌
  • 速度

行为(功能)

      启动

      加速

      刹车

而真正的一辆车:

  • 一辆红色宝马
  • 一辆黑色奥迪

这些叫做对象

也就是说:

类 = 模板

对象 = 根据模板创建出来的实体

C++升级struct升级成了类

 1、类⾥⾯可以定义函数

 2、struct名称就可以代表类型

 

二.C++中的类

基本语法

例子:

运行结果:姓名:张三
                  年龄:20

类中的重要概念

1. 属性(成员变量) 

 用于保存数据。

2. 方法(成员函数)

用于描述行为。

3. 对象

4.访问限定符

public:

表示:下面的内容可以在类外部访问

protected和private

表示:修饰的成员在类外不能直接被访问

访问权限作⽤域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为⽌,如果后⾯没有 访问限定符,作⽤域就到}即类结束。

class定义成员没有被访问限定符修饰时默认为private,struct默认为public。

⼀般成员变量都会被限制为private/protected,需要给别⼈使⽤的成员函数会放为public.

5.类域

类定义了⼀个新的作⽤域,类的所有成员都在类的作⽤域中,在类体外定义成员时,需要使⽤::作 ⽤域操作符指明成员属于哪个类域。

类域中的成员如何访问

对象访问

类域中的查找规则

类内部访问成员时:

编译器会先在:

  1. 当前函数作用域找
  2. 类域找
  3. 全局作用域找

全局变量和类成员重名

::a用来访问全局变量

三.实例化

“类”只是模板,真正创建出对象,才叫实例化。

类 → 只是定义

对象 → 真正存在的数据

从类创建对象这个过程,就叫实例化。

1.定义类

这里只是告诉编译器 Student 长什么样。

2.实例化

这句才是实例化

实例化后

系统会:

  1. 给对象分配内存
  2. 创建成员变量

3.对象大小

s1 和 s2都来自同一个类,但它们的数据互不影响

因为每个对象都有独立内存。

四.this指针

this是一个指针,指向“当前对象”。

简单来说:

谁调用成员函数,
this 就指向谁。

为什么需要this指针

Date类中有Init与Print两个成员函数,函数体中没有关于不同对象的区分,那当d1调⽤Init和 Print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?那么这⾥就要看到C++给了 ⼀个隐含的this指针解决这⾥的问题。

编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做this 指针。⽐如Date类的Init的真实原型为, void Init(Date* const this, int year, int month, int day)

类的成员函数中访问成员变量,本质都是通过this指针访问的,如Init函数中给_year赋值, this- >_year = year;

C++规定不能在实参和形参的位置显⽰的写this指针(编译时编译器会处理),但是可以在函数体内显 ⽰使⽤this指针。

其实当调用d1时,第一个参数会传给this指针d1的地址,这样就能区分d1和d2的调用了

 

总之this指针就是

谁调用成员函数this 就指向谁

 

 

 

 

 

 

  

 

更多推荐