- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
静态成员变量 静态成员变量与外部静态变量的区别: 静态成员变量属于该类域 外部静态变量属于全局域. 静态成员变量与普通成员变量的区别: 该类的不同对象(实例)有各自不同的普通成员变量 该类的所有对象(实例)共享同一个静态成员变量 所有静态变量都存储在静态存储区,程序开始时分配内存并初始化.新创建对象时,不再对静态数据成员初始化. 参考程序05_04. 静态成员函数 类成员函数都存放在代码段,无论通过哪一个对象来调用成员函数,都是执行同一段代码. class point{ int x, y; public: void setpoint(int xv, int yv){x = xv; y = yv; } }; main(){ point p1, p2; p1.setpoint(10, 10); p2.setpoint(20, 20); } this指针 类的普通成员函数都隐藏了一个缺省的参数: this指针. class point{ int x, y; public: void setpoint(point* this, int xv, int yv){ this?x = xv; this?y = yv; } }; p1.setpoint(p1, 10, 10); p2.setpoint(p2, 20, 20); 静态成员函数 静态成员函数与非静态成员函数区别在于: 不能声明为const 或volatile 静态成员函数没有this指针作为参数. 静态成员函数中不能直接访问非静态变量. 无需创建类的对象,就可以调用静态成员函数. class point{ static int z; int x, y; public: static void setz(int zv){ z = 0; // ok // x = 0; y = 0; // error } }; main(){ point::setz(0); // ok } 6. 类大小计算 类的大小即新建一个对象时为之分配的内存大小. 类大小的计算与结构体struct大小的计算类似: 等于所有非静态数据成员的大小的总和(需要考虑数据对齐). 静态数据成员存储在静态数据区,只有一份拷贝,创建对象是不会为之分配内存,不占大小. 成员函数存放在代码区,不占大小. 参考代码05_05. 类大小计算 class A{ }; class B{ int x;}; class C{ static int x; B b; }; class D{ int x; C c; D(); ~D(); }; class E{ int x; C c; E(); virtual ~E(); }; sizeof(A) = 1; // 为了取地址及其他操作,系统分配1字节. sizeof(B) = 4; // x占4字节 sizeof(C) = 4; // x为静态变量不占大小, b占4字节 sizeof(D) = 8; // x占4字节,c占4字节,成员函数不占大小 sizeof(E) = 12; // x占4字节,c占4字节. 因为声明了虚函数, // 隐藏的虚函数表指针vptr占4字节 7. 友元 封装性是类的最基本特性,保护私有成员不被外界访问。 友元即朋友(friend),具有普通外界对象所不具有的访问权限,能够访问对象的私有成员。 友元可分为三种: 友元函数 友元成员 友元类 友元函数 某个类的友元函数,被允许访问该类的私有成员(包括成员变量和成员函数). class A{ int a, b; … friend void f1(); }; 使用友元函数需要注意: 友元函数不是该类的成员函数,而是外部函数 友元函数没有this指针,需要显式调用类成员. 示例程序: 05_06 友元成员 一个类还可以将另一个类的成员函数声明为该类的友元,则此友元成员函数可以访问该类的私有成员. class A{ void f1(); }; class B{ … friend void A::f1(); }; 只有当一个类的成员函数被“看到”时,它的成员函数才能被声明为另一个类的友元成员。 class B; // 类声明 class A{ void f1();
您可能关注的文档
最近下载
- 特种作业与特种设备作业人员培训课件.pptx VIP
- 22G101 三维彩色立体图集.docx VIP
- DK-金检机说明书(20110823HJ)-2.doc VIP
- SHT 3178-2015- 加油站用埋地钢-玻璃纤维增强塑料双层油罐工程技术规范.pdf VIP
- 特种设备典型事故案例.ppt VIP
- 2025-2026学年鲁科版(五四学制)(三起)(2024)英语四年级上册教学计划及进度表.pdf VIP
- 机器人行业深度报告:行星滚柱丝杠——高精技术集成之作,人形机器人线性关节 -2024-.pdf VIP
- JEDEC JESD47L(中英文对照版).pdf VIP
- 9 天上有颗南仁东星 课件(共28张PPT) 2025-2026统编版八年级语文上册.pptx VIP
- 科普版英语五年级上册单词默写表.docx VIP
文档评论(0)