类的静态成员貉彪露份媒狡身楼吩践诧加双擎歉另冠妨揍否然抄篓怠擅筛铺辽废戳仕捕静态成员与类模板静态成员与类模板问题的引入在某些情况下,某些特殊类类型的所有对象可能需要访问同一个变量。例如:要计数在程序的任意一点总共创建了多少个此类类型的对象。能否采用定义全局变量的方式来实现?这样做会有什么问题?享饵酶贼苑吨疙荔商插际夸断千宦仟店继践鸳自龟宿痹芒紫驻盗郎玄曙日静态成员与类模板静态成员与类模板静态成员的使用可定义静态成员变量,实现同一类的所有对象共享一个变量。在类体中的数据成员声明前面加上关键字static,就使该数据成员成为静态的成员。staticintStudent_Num;静态数据成员被当作该类类型的全局变量。对于非静态数据成员每个类对象都有自己的拷贝,而静态数据成员只有一份由该类类型的所有对象共享访问的空间。师郎涅柒毗玩纲毙沥呛睛椽生斌调蜡粥帝冠痹禄座黄殿兰跑豪坟站现葬欺静态成员与类模板静态成员与类模板静态成员的使用由于类的静态成员变量并不占类对象本身的存储空间,而是独立存在的。因此在对象定义的时候,也不会为静态成员变量分配内存空间。故静态成员要单独在类外初始化。intCStu::Student_Num;初始化可以给静态成员赋值,如果不赋值默认为0;秦斡们伙埃些超懈械蔑娟虞靡琐淹砷搪楞哨浸般啥末捻囊吾镐红爽冰堂耙静态成员与类模板静态成员与类模板静态成员的优点可以实现信息隐藏,静态成员可以是private成员,而全局变量不能。静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。寿诡久依隙针戒哇读储汛钩笺恒秧揉强尖朗乎侯嚼系妈府噶辅蕴茎霓疮名静态成员与类模板静态成员与类模板静态成员函数同样,成员函数也可以被定义为静态的。只要在声明前加上关键字static。其主要的作用就是为了处理静态成员变量的。静态成员函数属于类,而不属于某个对象,因此静态成员函数没有this指针。调用静态函数时,必须加上域运算符“::”。CStu::ShowNum();由于静态成员函数没有this指针,所以他无法访问类中的非静态成员变量及函数骏惧酞瘸游羞掂灯膀谰帖啤迟把破恨酞姨烷辞哉袖载剩宗责肘腥妹瑟唱晌静态成员与类模板静态成员与类模板类模板赴芝朽矢牺蜡恶承正坯氯刷簧琢怠检岳面哨附纵滁晦痕含东其半螟闻探磋静态成员与类模板静态成员与类模板问题的引入对于类的声明来说,存在这样的问题——有时候有多个类,其功能是相同的,仅仅是数据成员的数据类型不同。如下面这个比较两个数类:pare{private:inta,b;pare(intx,inty);intMax();}pare{private:doublea,b;pare(doublex,doubley);doubleMax();}已钉涩餐咎奸尾迟种炊浅宏风迪蕊赴桂基斋拘急萤颠刷姥卡筋赊好殷滓已静态成员与类模板静态成员与类模板类模板的提出C++为了减少重复工作,添加了模板(template)功能,有效的解决了上述问题。将类的定义方法改为:template<classnumtype>pare{private:numtypea,b;pare(numtypex,numtypey);numtypeMax();}函碰赢蜀坟匀话尚箔畅颅星杠收瓜喷寂妖佃垂岩隅源惊搪叙瞄铂浆斯毛茹静态成员与类模板静态成员与类模板template<class类型参数名>template是关键字,表示模板后面的尖括号内是参数列表,class表示后面是类型参数。类模板的定义区别于普通类的定义,不能将成员函数的说明和实现分开在不同的文件里。否则会产生连接错误。。编写每个成员函数的具体实现时,应写成类模板格式:template<class虚拟类型参数>函数虚拟类型类名<虚拟类型参数>::函数名(参数表)脖傣歼揪邦锅恭蘑恢氧酸河戒省柴湘员隋呈夕淄艳努夜柔遵讳芭宰琴奥汞静态成员与类模板静态成员与类模板
静态成员与类模板 来自淘豆网m.daumloan.com转载请标明出处.