c第6次课24.对象的使用_第1页
c第6次课24.对象的使用_第2页
c第6次课24.对象的使用_第3页
c第6次课24.对象的使用_第4页
c第6次课24.对象的使用_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

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

文档简介

1、回顾构造函数及种类初始化列表析构函数1目标this指针类的对象数组const对象和const成员函数类的静态成员2类和对象在内存中的关系2-13类和对象在内存中的关系2-2一个类的多个对象各自拥有类的数据成员的一个副本类的成员函数则被其所有对象共享一个类的不同对象响应相同的消息时,调用的是同一个函数4this指针每个对象都有一个指向自身的this指针(对象的内存地址)对象调用成员函数时会将自己的this指针传递给成员函数(隐含参数)成员函数访问对象的所有数据成员都是通过this指针访问this指针的另外一个作用访问对象自身(*this)5this指针的使用2-1#include class T

2、est public:Test(int n = 0); Test & setData(int n);void print();private:int data;Test:Test(int n)this-data = n;/data=n;6this指针的使用2-2Test & Test:setData(int n) data = n;/this-data=n; return *this;void Test:print() coutdata = data!endl;void main() Test obj1; coutobj1: ; obj1.setData(100).print();7类的静态成

3、员类的数据成员和成员函数都可以声明为static。静态成员解决数据共享的问题实现共享:在类外设置全局变量,但是,全局变量都有局限性,破坏类的完整性 。类的静态数据成员可以在类的范围内存储数据,这种数据独立于类类型中的任何对象,但可以由这些对象访问。静态成员函数有一种独立于单个类对象的计算能力。类的非静态成员函数可以访问类的静态成员8静态数据成员2-1类中的普通成员对每个对象都有一个单独的副本实例类中的静态数据成员是该类所有对象所共同拥有的,只有一个实例,它不因对象的建立而产生,也不因对象的失效而删除,它是类定义的一部分,它属于整个类,即属于所有对象 定义:static 数据类型 数据成员名称;

4、初始化:静态数据成员不能由构造函数初始化,只能在类定义外使用:范围解析来完成static 数据类型 类名:数据成员名称=初始值;访问类名:静态数据成员9静态数据成员2-2/.h文件class CFileprivate:char *m_fileName;public:static bool saveState;File();File(char *fileName);/在.cpp文件中定义初始化bool CFile:saveState=true;int main()if(CFile:saveState=true)/文件已保存else/文件未保存return 0;10静态成员函数4-1静态成员函数是

5、操作静态数据成员的函数定义: static 返回类型 函数名(参数列表)访问类名:静态成员函数静态成员函数不能声明为const.因为静态成员函数与类的对象无关,它没有this指针,所以不能用const关键字11静态成员函数4-2静态成员函数不能访问类的非静态成员变量静态成员函数不能调用非静态成员函数静态成员函数的优点在于:即使不存在类的对象,它们也存在,并且可以调用非静态成员函数可以访问静态数据成员,也可以调用静态成员函数12静态成员函数4-3class MessageBoxpublic:enum MessageBoxButtonsOK=0,YesNo=1,YesNoCancel=2;enum

6、 DialogResultYes=0,No=1,Cancel=3;static void Show(char *message);static DialogResult Show(char * message,MessageBoxButtons buttons);void MessageBox:Show(char *message)coutmessageendl;13静态成员函数4-4MessageBox:DialogResult MessageBox:Show(char *message, MessageBox:MessageBoxButtons buttons)coutmessage 成员

7、名Delete 指针名;15对象数组声明类的对象数组的方式与声明其他类型的数组方式完全相同。对象数组的初始化16对象数组的使用class CRectpublic:CRect();CRect(int width,int height);int Area();private:int m_width,m_height;CRect:CRect()m_width=m_height=0;CRect: CRect(int width,int height)m_width=width;m_height=height;/其它省略void main()CRect rectArr6=CRect(1,2),CRect

8、(2,3); CRect* pRectArr6; int i = 0; for(i=0; i6; i+) coutrectArri.Area(); for(i=0; iArea(); for(i=0; im_Count=0;const 成员函数const成员函数不会修改调用它的对象。const成员函数只能访问数据成员的值,而不能修改它21/.h文件class Studentpublic:int GetChinese() const;private:int m_score5;/.cpp文件int Student:GetChinese() constreturn m_score0;/相当于只读存取

9、权限的补充 mutable用于定义更改频繁的数据成员. 数据成员即使在const对象或在const成员函数中都可以被修改22class CRectpublic:int getwid() const;private:mutable int m_wid;int CRect:getwid()return m_wid*1.1;内联函数与类2-1对调用频繁且代码简单的成员函数可以使用内联函数. 则编译时此内联函数的执行代码会插入到每个调用它的地方内联函数在类中的声明隐式声明:把函数执行代码写在类主体内显式声明:为了程序的可读性,一般为显式声明, 即函数实现时返回值类型前加inline; 类主体内如同一般的成员函数声明23内联函数与类2-2class Studentpublic:Student(char *name,int age,int score5);int GetTotal();float GetAVG();private:int m_Score5;inline

温馨提示

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

最新文档

评论

0/150

提交评论