C++笔记3:封装上_第1页
C++笔记3:封装上_第2页
C++笔记3:封装上_第3页
C++笔记3:封装上_第4页
C++笔记3:封装上_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、封装上一:类:数据成员和成员函数对象的生死:构造函数和析构函数1、类和对象2、数据成员、成员函数3、构造函数、析构函数4、对象的复制与赋值5、对象的数组与对象指针6、this指针二:类和对象1:对象是具体的事物,类是从对象中抽象出来的。目的不同抽象出来的信息也不同。2:访问限定符public:公共的protected:受保护的private:私有的3:对象实例化类有多个对象。实例化的方式:从栈中实例化(自动释放内存)、从堆中实例化(手动释放内存:delete)。4:对象成员的访问5:定义类类名的选择:从类名中看出类的功能;在类中访问限定符可以使用一个,也可以使用多个;三:字符串1:字符串:st

2、ring四:数据的封装1:面向对象的思想:将所有的数据操作转化为成员函数的调用以上这种形式方法违背了面向对象的指导思想。2:数据的封装数据的封装一般用set来对函数赋值 get函数用来读取数据成员3:好处封装的好处:能做到让数据只能读不能写(权限控制);防止非法的赋值。1.建议访问限定符的public写在private前面,这样在访问类时可以节省时间。2.“只读”权限:只能读不能写,在封装的时候只定义读取函数,不定义赋值(改值)函数。3.建议定义私有成员时命名为 m_数据类型+成员名(首字母大写) m是member的意思如:string m_strName 以便区分数据成员.,而已知道是类里面

3、的数据成员。4:例子五:类内定义与内联函数1:内联函数,比普通函数速度更快,省掉了步骤2和42:类内定义:该成员函数会将其优先编译成为内联函数3:类外定义:同文件类外定义和分文件类外定义同文件类外定义:分文件类外定义:类的声明在.h的文件下,类的定义在.cpp的文件下,cpp文件要将.h文件包涵进来,在定义函数时要用文件名:的形式让编译器知道实现谁的函数3:文件内外定义:1、首先在头文件的位置建立一个".h"的文件,然后在源文件内添加一个".cpp"的文件。2、把类的声明放到".h"当中。3、将关于类的定义放到".cpp&q

4、uot;当中。并记得将它的头文件#include"类名称.h"加进去。4、把所有的头文件要用的声明写进去".h"/".cpp"当中/include<string>、using namespace std;5、调试4:封装成员函数步骤:1、 先写关键字pullic,private;2、然后在private中定义全部成员。/加上类型符号string或者int之类的识别符,记得加头文件#include.3、再写public中罗列所有声明的成员函数:void setName(string name);string getName(

5、);.4、开始内外定义:void "类":setName(string name)/把priavte的成员逐个写进去/"成员" = "_同等成员名称"string "上述成员":getName()return "上述成员"/用来实现5、在主函数中使用,实例化对象。声明一下成员对象的首地址,如: Teacher t;/ t关键字入口 通过"."访问关键字.对象(初始化);如:t.setName("孔子");./所有数据6、输出所有成员/cout<<

6、;"成员"<<.<<endl;7、开始调试分文件类外定义:同文件类外定义:六:对象结构1:内存分区栈区:内存由系统来分配和回收堆区:由new创建出来的对象,必须用delete进行回收内存2:对象结构3:对象初始化4:构造函数为了在初始化函数时进行误操作:忘记调用或者重复调用了初始化函数,引入了构造函数特点:l 构造函数在对象实例化时会自动调用且只被调用一次,构造函数与类同名,构造函数没有返回值;l 构造函数可以有多个重载形式,实例化对象是仅用到一个构造函数,当用户没有定义构造函数时,编译器会自动生成一个构造函数。 5:例子部分代码在上个例子的基础上添

7、加了一点构造函数的内容6:默认构造函数:在实例化对象时不需要传递参数的构造函数称为默认构造函数。初始化列表的必要性,如果数据成员中有const常量时,在构造函数中给常量赋值是错误的,但在初始化列表中是可以的。Teacher();/无参构造函数Teacher(string name="Jim",int age=1);以上这两个不能同时出现,会产生错误;如果其中一个赋初值则可以同时出现。7:拷贝构造函数拷贝构造函数的参数是确定的,不能重载 8:析构函数 9:总结 综合练习:#include <iostream>#include <string>using

8、 namespace std;/* * 定义类:Student * 数据成员:m_strName * 无参构造函数:Student() * 有参构造函数:Student(string _name) * 拷贝构造函数:Student(const Student& stu) * 析构函数:Student() * 数据成员函数:setName(string _name)、getName() */class Student public: Student(); Student(string _name); Student(const Student& stu); Student(); void setName(string _name) m_strName=_name; string getName() return m_strName; private: string m_strName;int main(void) / 通过new方式实例化对象*stu Student *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论