郑州网站开发douyanet,openwrt wordpress,中国建设工程造价管理协会网站,济南中企动力怎么样目录#xff1a;
一#xff1a;面向对象和过程的介绍
二#xff1a;类的引入
三#xff1a;类的定义
四#xff1a;类的访问限定符以及封装
五#xff1a;类的作用域
六#xff1a;类的实例化
七#xff1a;类对象大小的计算
八#xff1a;类成员函数的this指…目录
一面向对象和过程的介绍
二类的引入
三类的定义
四类的访问限定符以及封装
五类的作用域
六类的实例化
七类对象大小的计算
八类成员函数的this指针 思维导图 1面向对象和过程的介绍 C语言是面向过程的一门语言。面向过程就是把事情拆分成几个步骤相当于拆分成一个个的方法和数据然后按照一定的顺序执行。 C是对C的改进C兼容C所以C既面向过程也面向对象。面向对象把事物抽象成对象的概念先抽象出对象然后给对象赋一些属性和方法然后让每个对象去执行自己的方法。 比如说洗衣机洗衣服 面向对象先抽象出对象人脏衣服洗衣液洗衣机之后让指定的对象按照自己的方法去执行 2类的引入 学过C语言的老铁们应该都知道结构体只能定义变量不能定义函数而在C里面结构体不仅可以定义变量还支持定义函数在C,更频繁使用class这个关键字来定义类 以实现一个栈为列 c语言里面的结构体是不支持函数定义在里面的 对于C就不一样了 3类的定义 class className { // 类体由成员函数和成员变量组成 }; // 一定要注意后面的分号 类体中的内容为类的成员由2部分组成成员函数类的方法成员变量类的属性或者对象
对于类的定义有两种方法 3.1声明和定义全部在类体里面 3.2类的声明在.h文件成员函数定义在.cpp文件 注意当成员函数定义在cpp文件里面的时候需要用类的名字域作用限定符进行索命一下 3.3成员变量命名原则 当我们初看此代码的时候往往感到头大。到底 ‘ ’的右边是形参还是成员变量捏 这对代码的可读性的要求不就上来了吗。往往我们会对形参名字前面后面加一个下划线当名字相同的时候 4类的访问限定符以及封装
4.1访问限定符 C的访问限定符有3种 public(公有)private(私有)protect(受保护) 1. public修饰的成员在类外可以直接被访问 2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的) 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. 如果后面没有访问限定符作用域就到 } 即类结束。 5. class的默认访问权限为privatestruct为public(因为struct要兼容C) 注意访问限定符只在编译时有用当数据映射到内存后没有任何访问限定符上的区别 经典面试题C中struct和class的区别是什么
权限不同struct 默认权限是public,兼容C; class 默认权限是 private在继承和模板参数列表位置struct和class也有区别
4.2封装 面向对象的封装有3个特点封装继承多态 封装的本质就是为了更好的管理 在 C 语言中实现封装可以 通过类将数据以及操作数据的方法进行有机结合通过访问权限来 隐藏对象内部实现细节控制哪些方法可以在类外部直接被使用 。 5类的作用域 类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员时需要使用 ::作用域操作符指明成员属于哪个类域。 6类的实例化 一个类是对对象的一种描述他限定了一个对象的成员属性可以把类理解成一个模型只是对对象的一种形象化的描述但在创建类的成员的时候并没有对对象进行初始化申请内存 创建了一个Date的类但是并没有对Date这个所有的成员进行初始化 当前创建了一个time1这样的一个Date类同时系统也为time1进行内存的分配 7类对象大小的计算 结构体内存对齐规则 1. 第一个成员在与结构体偏移量为0的地址处。 2. 其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 注意对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。 VS中默认的对齐数为8 3. 结构体总大小为最大对齐数所有变量类型最大者与默认对齐参数取最小的整数倍。 4. 如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处 结构体的整体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 综上我们可以看出一个类所占字节的大小实际上就是该类中所有变量的大小注意结构体的对齐规则 空类或者是只有成员函数的类比较特殊只占一个字节用来表示类的对象 8类成员函数的this指针 1. 成员函数中不能给this指针赋值。 2. 只能在“成员函数”的内部使用 3. this指针本质上是“成员函数”的形参当对象调用成员函数时将对象地址作为实参传递给this形参。所以对象中不存储this指针。 4. this指针是“成员函数”第一个隐含的指针形参一般情况由编译器通过ecx寄存器自动传递不需要用户传递 灵魂拷问的面试题 1this指针存放在哪一个区域 this指针存放在栈区的注意不是存放在对象里面的 2可不可以对this指针进行赋值 不能对this指针赋值 分析以下程序运行的结果 1 有不少人可能认为程序会崩溃p-Init( ……)这不出现了空指针的访问吗 注意看到 - 不一定就是对指针的解引用在这里就不是对成员函数的解引用注意Init( ……)这个函数是存放在公共代码区域的所以这里并不会出现空指针访问的问题 2 此时程序崩溃原因就是对空指针出现了访问 结语
以上就是我今日要为大家share的内容关于类和对象这个知识模块比较抽象需要多多练习结合理解希望大家看到此篇博客可以有所收获