- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C静态成和多态性
2.4 静态类成员
类的每个对象有自己的所有数据成员的副本,有时类的所有对象应共享数据
的一个副本,这时可以使用静态数据成员。
静态类成员:使用关键字static进行修饰的类成员。
静态类成员可以声明为public、private或protected。
2.4.1 静态数据成员
1、静态数据成员表示的是类范围中所有对象共享的信息,相当于局部于类中的“全局变量”,为该类的所有对象共享。因为静态数据成员只有一个数据副本,所以可以节省存储空间。
2、静态数据成员必须在文件作用域内进行初始化,而且只能初始化一次。
3、即使还没有建立类的对象,静态成员就已经存在,并且可以访问。
4、对于公有静态成员,可以使用类名和作用域运算符“::”对其进行访问。
5、由于数据隐藏的需要,静态数据成员通常被声明为私有的,而通过定义公有的静态成员函数来访问静态数据成员
护早冒楔咆剑体陨帘昭殉剑徽徽榨进峦樱埠耳宛爵吕泄啡答蛾营挑瞒曳迪C++静态成和多态性C++静态成和多态性
例 2_4
#includeiostream.h
class Test{
public:
static int x; // 静态数据成员
};
int Test::x=25;
void main()
{
coutTest::xendl; // 输出25
}
骨聘洋勘剥淆咽汽危恳障吴请及蟹澄舔丧显澜冰寻尊汉枷讹役歧神圣拼娟C++静态成和多态性C++静态成和多态性
2.4.2 静态成员函数
静态成员函数是用关键字static进行修饰的成员函数。静态成员函数与一般的
成员函数有以下不同之处:
(1) 可以不指向某个具体的对象,只与类名连用。
(2)没有this指针,因为静态数据成员和静态成员函数是独立于类对象而存在的。即使在类还没有实例化任何对象时,静态数据成员和成员函数就已经存在并可使用。
(3)静态成员函数可以访问静态数据成员,也可以访问非静态数据成员,但访问非静态数据成员时,必须通过对象名或对象指针访问。见下例。
(4)类中的任何成员函数都可以直接访问静态成员。
(5)静态成员可以被继承,这时,基类对象和派生类的对象共享该静态成员。
(6)静态成员函数不能被说明为虚函数。
跃畸涎反权谬授题磨揖撤醛霍厉幽皖钎灌冉秒贱闺底常迭判睛提顺术垂椒C++静态成和多态性C++静态成和多态性
例2-5 :静态成员的使用.
#includeiostream.h
class Test{
public:
void setX() // 非静态成员函数
{ x=100; } // 在非静态成员函数中访问静态成员
int getA() { return a; }
static void setA(Test ); // 静态成员函数
static int getX() // 静态成员函数,是内联的
{ return x; }
private:
int a; // 非静态数据成员
static int x; // 静态数据成员
};
int Test::x=0; // 静态数据成员的声明和初始化
void Test::setA(Test t) // 在静态成员函数中访问非静态成员
{ t.a=200; // 写成 a=100 是错误的
}
竭累兢炒痞赚邦咒信析逊乱秸着勺甩叁绿短诗泳战仓黍国冲萌开隔红侧掐C++静态成和多态性C++静态成和多态性
void main()
{
coutTest::getX()endl; // 输出0
Test t1;
t1.setX();
coutt1.getX()endl; // 输出100
Test::setA(t1);
coutt1.getA()endl; // 输出200
}
均蘑鞠屏剔耙及麻蝇垛名瞥嚷夯否驳往宅策苗跨钻荔悉料曾捏那窘愧购厄C++静态成和多态性C++静态成和多态性
思考题:
某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时均以重量为单位,各箱的重量不一样,因此,商店需要记录下目前库存的货物的总重量,现要求用C++语言把商店货物购进和卖出的情况模拟出来。
分析:
显然应将这类货物用一个类来描述,而每箱货物作为这个类的对象。每箱货物有重量,因此应有一个数据成员来表示这箱货物的重量,而总重量用一个静态数据成员来记录它。
程序见例3-6.
庆蚊估潭扇诲宙襄频裔窄舔姥伍雇默黔官成些厢绩顷鳞尼垄捞仗初珍蛆桩C++静态
您可能关注的文档
最近下载
- 腹腔引流管脱管应急预案.pptx VIP
- 呼吸衰竭最新治疗指南解读PPT课件.pptx VIP
- 呼吸衰竭最新治疗指南解读PPT课件.pptx VIP
- 辟谷养身:12.空腹力革命.pdf VIP
- 施工组织设计主要经济指标.pptx VIP
- 2023年ISO15189 医学实验室管理体系全套表格.docx VIP
- DLT5210-2021版第一部分土建工程(热力系统土建工程质量验收)可编辑表格.docx VIP
- 10000字在学校挨机器人板子的作文.docx VIP
- 《A水利枢纽的拱坝设计中拱坝应力分析计算案例》3000字.docx VIP
- 2025年河北承德市中小学教师招聘考试试卷带答案.docx VIP
文档评论(0)