300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 类和对象——初入江湖

类和对象——初入江湖

时间:2020-09-17 08:50:11

相关推荐

类和对象——初入江湖

文章目录

1.面向过程和面向对象的区别2.什么是类3.类的定义3.1类的两种定义方式4.类的访问限定符及封装4.1什么是封装4.2访问限定符5.类的作用域6.类的实例化7.类大小的计算7.1类的大小不包括函数的大小7.2空类的大小不为零8.this指针8.1什么是this指针8.2this指针的特性

1.面向过程和面向对象的区别

C语言是面向过程的,关注的是实现的过程,分解出解决一个问题的步骤,通过调用函数来逐步解决问题;

C++是面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成;

举个简单的例子:

我们点外卖,需要经过接单,配餐,送餐这就是关注过程。老板,外卖员和客户就是关注对象。

2.什么是类

C语言中,结构体是变量的集合,在C++中结构体中不仅可以定义变量还可以定义函数。

在C++中更喜欢用关键字class代替struct。

3.类的定义

计算机语言一般是向前兼容的,C++中依然兼容C语言结构体的用法,并且在此基础上将struct升级为了类,特点是类中除了可以有变量还可以有函数;

class为定义类的关键字,stu为类的名字,{}为类的主体。

类中的元素称为类的成员:类中的数据称为类的属性或者成员变量;

类中的函数称为类的方法或者成员函数;

3.1类的两种定义方式

1.声明和定义全部放在类体之中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

2.声明放在头文件中,类的定义放在.cpp文件之中(分离的是成员函数)

两种定义方式,采用得较多的是第二种

4.类的访问限定符及封装

4.1什么是封装

C++实现封装的方式:用类将对象的属性与方法结合在一起,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用;

1.数据和方法放到了一起,封装到类中。比如C语言中数据是结构体,方法是函数,是分离的。

2.通过访问限定符来控制外面能否访问

封装的特性:

将数据和操作数据进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

封装本质上是一种管理:比如在博物馆内,如果什么都不管,文物很容易就被破坏了,那么我们需要建房子将文物封装起来。但是封装的目的不是不让人看,因此开放售票通道,可以购票突破封装在合理的监管机制下参观。

类也是一样的,我们将类的数据和方法都封装在一起,不想让人看到的用限定符private/protected将成员封装起来。开放一些共有的成员函数对成员合理的访问。所以封装本质上是一种管理。

4.2访问限定符

5.类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用::作用域解析符,指定成员属于哪个类域

6.类的实例化

1.类只是一个模型一样的东西,限定了类有哪些成员,定义出来一个类并没有分配实际的内存空间来存储它;

2.一个类可以实例化出多个对象,实例化出来的对象占用实际的物理空间,存储类成员变量;

3.比如,一个产品的设计图就是类,设计图中说明了需要什么东西,但是没有实际的产品,设计图是不同当作产品用于生活的,只是一种设计。同样类也是一种设计,是不进行数据的存储的。

类实例化出来的对象就是按设计图要求做出来的产品。实例化出来的对象才能存储数据,占用物理空间;

7.类大小的计算

类本质上也是结构体,计算大小时也要进行内存对齐,但是类和结构体的区别是,类中还包含成员函数,那么成员函数的大小怎么计算呢?

理论上来讲,我们的类中存储变量和函数指针,因此计算大小时,在内存对齐的基础上,计算出成员变量和成员函数的大小,那么实际情况呢?请看下图

7.1类的大小不包括函数的大小

7.2空类的大小不为零

8.this指针

8.1什么是this指针

8.2this指针的特性

1.this指针的类型:类类型* const

2.只能在成员函数的内部使用

3.this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针

4.this指针是成员函数第一个隐含的指针形参,一般情况低下由编译器通过ecx寄存器自动传递,不需要用户传递;

问题集:

1.this指针存在哪里?

2.this指针可以为空吗

在某些场景可以为空

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。