- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Static成员变量,static成员函数解析
篇1:Static成员变量,static成员函数解析
最近看EffectiveC++常常看到一些和static相关的内容,盼望综合整理一下,假如有不全,还望补充:
1类中的Static成员变量
static成员它不像一般的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!
一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不影响,但是static成员变量不是在栈空间而是在静态存储区,全部的类对象共享static变量,静态成员是可以独立访问的,无需创建任何对象就可以访问
只是定义一个static变量,这个变量不能在类当中进行初始化,当然包括类的构造函数,static成员的初始化在类的外部进行。
静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应当被放在头文件中(在VS中也不报错)。
注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的状况下,这样做会引起重复定义这样的错误。即使加上#ifndef#define#endif或者#pragmaonce也不行。
#include“static.h”#includeusingnamespacestd;classPerson{private:stringname;staticintage;public:Person(conststring//正确,静态数据成员base_object2;//错误base*pObject;//正确,指针base//正确,引用};2类中static成员函数
由于static成员并不属于类中的某一个对象,所以static成员函数没有this指针,一般成员函数可以声明为const说明函数不会修改所属类
的信息,由此可见,没有this指针,静态成员函数不能被声明为const
static成员函数只能够访问static成员不能使用非static成员
classPerson{private:stringname;conststaticintage=20;staticstringaddress;public:Person(conststring//其中conststatic成员函数:这里应当是有一点迷惑性,其实就是返回类型为const
静态成员函数的地址可以赋值给一般的函数指针储存,一般成员函数地址只能赋值给类成员指针
classbase{staticintfunc1();intfunc2();};int(*pf1)()=//一般的函数指针int(base::*pf2)()=//成员函数指针3继承静态成员变量同样被类的派生类对象共享
#include”static.h“#includeclassbase{public:staticint_num;//声明};intbase::_num=0;//静态数据成员的真正定义classderived:publicbase{};voidmain(){basea;derivedb;a._num++;cout篇2:C++中类const、static、staticconst成员变量
#include
usingnamespacestd;
classTest
{
private:
constinta;//const成员变量只能在构造函数的成员初始化列表中初始化,不能在函数体中和其他地方
staticintb;//static成员变量需要在全局范围内初始化,格式:类型名类名::变量名=值
staticconstintc;//staticconst成员变量需要在全局范围内初始化,格式:类型名类名::变量名=值
public:
Test():a(1){}//正确
//Test(){a=1;}//错误
intget_a()
{
returna;
}
intget_b()
{
returnb;
}
intget_c()
{
returnc;
}
};
intTest::b=2;
constintTest::c=3;
intmain()
您可能关注的文档
最近下载
- 大学生职业生涯规划.pdf VIP
- 2025广西中考化学真题试卷及答案 .pdf VIP
- 内生真菌A21-1-1在防治水稻稻瘟病中的应用.pdf VIP
- 99038 法学毕业考核 自考考试大纲.docx VIP
- 工 程 报 价 单模板.docx VIP
- 中医耳鼻咽喉科学喉痈课件.pptx VIP
- (新)电大资源网11379《人文英语3》国家开放大学期末考试题库(476)[期末纸考+一平台机考]-已排版.pdf VIP
- 2024北京中医药大学第二批管理岗、专职辅导员岗、其他专技岗招聘笔试备考试题及答案解析.docx VIP
- 犯罪学(00235)自考复习资料.doc VIP
- 2025年北京中医药大学管理岗、专职辅导员岗、实验技术岗、其他专技岗招聘笔试模拟试题及答案解析.docx VIP
原创力文档


文档评论(0)