- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 静态成员 静态数据成员 静态成员可以实现多个同类对象的数据共享,它不是某一个对象的成员。 静态数据成员只存储一处,供所有对象使用。 静态数据成员具有静态生存期,它的内存空间在编译阶段就已经分配,程序结束时释放。 共享包括: 变化的共享---如类对象创建的计数值。 不变的共享---如日期类中可能使用到的12个月的名称, 它是一个静态数组。最好设置为const。 如:static const char* monArr[12]; 这些共享数据是专属于某个类的变量。 2.友 元 友元函数 首先,它是一般的函数,而不是类的成员函数; 其次,在类的定义中,用friend关键字将它说明为类的友元(在私有段和公有段都可),这样它被允许可访问该类的所有对象的私有成员。 优点:友元可以直接访问对象的私有成员,省去了调用类成员函数的开销。提高了程序的效率。 缺点:破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。导致程序的可维护性差。 友元类 一个类B 可以是另一个类A的友元。这意味着类B 中的所有成员函数都可以访问类A中的私有成员。 说明类B 是类A的友元的方法是在类A中加入说明语句:friend class B ; 即A主动说明B够朋友 此语句所在的位置没有特别的要求,在公有和私有段都可。 友元关系不能传递。 函数F?类B(F是朋友)?类A(B是朋友) 3. 运算符重载 运算符重载的作用是什么? 所谓运算符重载就是赋予已有的运算符多重含义。 C++中预定义的运算符其运算类型只能是基本数据类型,而不适用于用户自定义类型(如类)。 运算符重载使运算符的运算对象扩充为自定义类型(如类) 。 int x,y,z; z=x+y; class Point{ private: int x,y; public: //… … }; Point p1,p2,p3; p3=p1+p2; 哪些运算符可以用作重载? 几乎所有的运算符都可用作重载。 这些运算符不允许重载: . :: ?: sizeof 重载运算符有哪些限制? 不可臆造新的运算符。必须把重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中。 重载运算符坚持4个不能改变 。 不能改变运算符操作数的个数; 不能改变运算符原有的优先级; 不能改变运算符原有的结合性;? 不能改变运算符原有的语法结构。 运算符重载时必须遵循哪些原则? 使用重载运算符时应遵循如下原则:?(1) 重载运算符含义必须清楚。?(2) 重载运算符不能有二义性。 重载为友元函数 Person Person::operator=(const Person s){ coutAssigning s.pName\n; if (this==s) return *this; delete []pName; pName=NULL; pName=new char[strlen(s.pName)+1]; if(pName) strcpy(pName,s.pName); return *this; } Person::~Person(){ coutthis Destructing pName endl; if(pName) delete []pName; pName=NULL; } void main(){ coutmain...\n; Person p1(Tom); Person p2(John); p1=p2; } main... 0012F56C Constructing Tom 0012F570 Constructing John Assigning John 0012F570 Destructing John 0012F56C Destructing John 调用自定义赋值函数,程序正常执行,解决内存泄漏问题。 Tom John Tom John 自定义函数执行p1=p2; p1 p2 p1 John 新建存储区 拷贝串 p2 释放空间 重复释放 Tom John John 用默认函数执行p1=p2; p1 p2 p1 p2 Tom 无法释放 对字符串处理的总结 防止内存泄露,往往要重写拷贝构造和赋值函数。 因此,我们可以编写一个字符串类,在该类中解决内 存泄露问题。 如此以后,其他类就可以直接使用字符串类了,自然,在这些其他类中并不用再去考虑内存泄露问题了,因为字符串类本身已
您可能关注的文档
最近下载
- 土方工程施工质量控制要点.ppt
- Wi-Fi技术及应用.ppt VIP
- 学习教育专题党课:严守中央八项规定精神,争做新时代合格党员.docx VIP
- 2025年党支部书记学习教育专题党课中央八项规定专题党课讲稿(严守中央八项规定精神,争做新时代合格党员;从中央八项规定精神看党员干部的责任与担当).docx VIP
- 9.1.2 用坐标描述简单几何图形(教学设计)七年级数学下册(人教版2025).pdf
- 2025年通信工程师中级传输与接入(无线)真题及答案解析 .pdf VIP
- 研究生考试政治常考知识点.pdf VIP
- 基于单片机的智能家居语音识别控制系统.docx
- 深入贯彻中央八项规定精神学习教育党课(ppt).pptx VIP
- 数字式加速度传感器的设计.docx
文档评论(0)