当前位置: 首页> 文旅> 艺术 > 乐清最新招聘信息网_免费制作企业宣传片app_优化大师app下载安装_南京搜索引擎推广优化

乐清最新招聘信息网_免费制作企业宣传片app_优化大师app下载安装_南京搜索引擎推广优化

时间:2025/7/11 7:35:15来源:https://blog.csdn.net/iiiiisss/article/details/144110202 浏览次数:0次
乐清最新招聘信息网_免费制作企业宣传片app_优化大师app下载安装_南京搜索引擎推广优化

本节目标


一、面向过程和面向对象初步认识

二、类的引入

三、类的定义

四、类的访问限定符及封装

五、类的作用域

六、类的实例化

七、类的对象大小的计算

八、类成员函数的this指针


一、面向过程和面向对象初步认识

  • C语言是面向过程的,关注的过程,分析出求解过程,通过函数调用来解决问题
  • C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互来解决问题

  • 二、类的引入

  • C语言中结构体struct只能用来定义变量
  • 但在C++中还可以定义函数
  • 而在C++里面一般喜欢用class替代struct,二者差别不大
  • 用struct或class定义的 就叫做类


三、类的定义

  • class为定义类的关键字
  • className为类的名字
  • { }中为类的主体,注意后面加分号
  • 类中的内容成为类的成员
  • 类中的变量称作成员变量或类的属性
  • 类中的函数称作成员函数或者成员方法
  • 类有两种定义方式
  • 第一种是类里函数的声明和定义全放在类里
  • 注意:如果成员函数在类里定义,编译器则可能将其当成内联函数处理
  • 第二种是成员函数声明放在.h头文件,成员函数定义放在.cpp文件
  • 注意:其他文件来定义成员函数时,成员函数名字前需要加类名::
  • 一般情况下,我们推荐使用第二种,尤其是大型工程项目时

四、类的访问限定符及封装

1.访问限定符

  • C++实现封装,用类将对象的属性与方法也就是变量跟函数结合在一块,让对象更完善
  • 然后加上访问限定符来选择是否让外部用户使用此类,是否将接口提供给外部用户
  • 访问限定符一共有三种
  • public公有代表类外成员可以访问,子类也可以访问 (子类涉及到继承,后面知识)
  • protected保护代表类外成员不可以访问,但子类可以访问
  • private私有代表类外成员不可以访问,子类也不可以访问
  • 访问限定符只在编译时有用,当数据映射到内存中,没有任何区别了
  • 相关面试题------C++中struct和class的区别时什么?
  • 答:C++需要兼容C语言,所以在C++中struct也可以当作结构体来使用,还可以用来定义类,和class定义类是一样的,区别在于类里不写访问限定符的情况下,struct里默认访问限定符为public,而class里默认访问限定符是private,另外在继承和模板方面,也有一些区别

2.封装

  • 相关面试题------面向对象的三大特性?
  • 答:封装,继承,多态
  • 相关面试题------在类和对象阶段,主要是研究类的封装特性,那什么是封装呢?
  • 答:封装是将数据与操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外开放接口供其使用,和对象进行交互,封装本质上是一种管理,让用户更方便的使用类

五、类的作用域

  • 类定义了一个新的作用域,类的所有成员都在此作用域里,在类外定义此类成员时,需要在前面加上::
  • ::是作用域操作符,用来指明成员属于哪个类的作用域

六、类的实例化

  • 用类的类型创建对象的过程,就叫做类的实例化
  • 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间来存储成员
  • 类就好比设计图,只有实例化才能变成图里面的东西
  • 下图展示了如何实例化

七、类对象模型

1.如何计算类对象的大小

  • 上图的类里既包含成员变量也包含成员函数,那么如何计算类里大小呢?

2.类对象的存储方式猜想

  • 以下有几种类的存储方式猜想
  • 实际上,类的存储方式就是
  • 类成员函数存在公共代码区,这个代码区在哪儿,我们不用关心,编译器会帮我们找到
  • 类成员变量存放在类空间内
  • 如果这个类没有成员变量,那么它实例化出来的对象大小是多少呢?
  • 大小结果为1,类实例化的对象大小不是应该为0吗
  • 实际上,没有成员变量的类保留1个字节是为了占位,表示类对象存在,但是没存储数据

3.结构体内存对齐规则

  • 相关面试题------结构体怎么对齐?为什么要进行对齐?
  • 相关面试题------如何让结构体按指定的对齐参数进行对齐,能否按照3,4,5任意字节对齐?
  • 相关面试题------什么是大小端,如何测试此机器是大端还是小端,什么场景考虑大小端?

八、this指针

1.this指针的引出

  • 上面是用Date类实例化出的两个对象d1和d2
  • 两个对象分别进行调用类里的成员函数时,它是如何区分是哪个类对象来调用它的?
  • 事实上,C++中通过引入this指针来解决此问题
  • C++编译器给每个非静态成员函数增加了一个隐藏的指针参数,让指针指向当前对象(函数运行时调用该函数的对象)
  • 被调函数的函数体内的成员变量都是通过该指针去访问,只不过我们看不到,编译器隐藏了
  • 例如 this->day = 10; this->month = 1; 我们只需要写day = 10,month = 1 即可,编译器自动在前面加this指针

2.this指针的特性

  • 如图所示
  • 相关面试题------this指针存在哪里?
  • 答:this指针存在栈里
  • 相关面试题------this指针可以为空吗?
  • 答:this指针可以为空,但前提是不可以用this指针去访问成员变量,不可以解引用
关键字:乐清最新招聘信息网_免费制作企业宣传片app_优化大师app下载安装_南京搜索引擎推广优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: