学习C++(2)之类的静态成员及静态成员函数
来源:互联网 发布:数据精灵后台授权 编辑:程序博客网 时间:2024/04/29 00:16
static类成员
关键字 static 可以用于说明一个类的成员,静态成员提供了一个同类对象的共享机制,把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员,静态成员局部于类,它不是对象成员。
//创建与初始化 class X { char ch ; static int s ; };int X :: s = 0 ;
#include<iostream.h>class counter{ public : counter (int a) { mem = a; } int mem; //公有数据成员 static int Smem ;//公有静态数据成员} ;int counter :: Smem = 1 ; //初始值为1void main(){ counter c(5); int i ; for( i = 0 ; i < 5 ; i ++ ) { counter::Smem += i ; cout << counter::Smem << '\t' ; } cout<<endl; cout<<"c.Smem = "<<c.Smem<<endl; cout<<"c.mem = "<<c.mem<<endl;}
无论这个有多少个对象被创建,都能共享这个static成员。在类外初始化,不需要类实例化也可以访问static成员。
class myclass{ public: static int num;};int myclass :: num=1;void main(){ std::cout<<myclass::num;//也可以访问}
static成员函数
静态成员函数数冠以关键字static。静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针。
在类外调用静态成员函数用 “类名 :: ”作限定词,或通过对象调用
class X{ private: int DatMem ; public : static void StaFun ( int i , X *ptr ) ; } ; void X :: StaFun ( int i , X * ptr ) { //DatMem=i;错误,static函数没有this指针,不能使用非static成员显式或者隐式地引用this,若为static成员则可以直接使用 ptr->DatMem=i;//正确,类的静态成员函数通过参数访问私有数据成员} void g(){ X obj ; X :: StaFun ( 1, & obj ) ; // 正确 obj.StaFun ( 1, & obj ) ; // 正确}
静态成员函数都在代码区,类的函数都是共享代码共享。
class myclass{ public: void run(); static void go();};//函数指针的构造myclass myclass1;//void (myclass::*p)()=&myclass1:run();//errorvoid (myclass:: *p)=&myclass::run();//普通成员函数void (*p)()=&myclass::go();//静态函数指针与对象无关
0 0
- 学习C++(2)之类的静态成员及静态成员函数
- C++之类的静态成员变量和静态成员函数
- 常对象及常成员及静态数据成员和静态成员函数的学习内容。
- C++之类的静态成员
- 静态数据成员及静态成员函数
- 静态成员及静态成员函数
- [C++] 静态成员函数
- 类的静态成员及静态成员函数
- C++之类的静态成员变量和静态成员函数1
- c++primer之类(类的静态成员)
- 静态成员(静态成员函数,静态数据成员)的特性
- 类的 静态成员 --- 静态成员变量 、 静态成员函数
- 第七周任务一之类中静态数据成员及成员函数(改进篇)
- C++系列之类的静态成员
- 【c++】类的静态成员函数
- C++static静态成员函数
- 【C++】静态成员函数小结
- C++:静态类成员函数
- mysql "email"字段 的属性项没有设置成UNSIGNED,但是添加'0'到email字段报错:#1062 –Duplicate entry '1' for key 'email',求解
- matlab中的符号对象与符号运算
- HDU 1087 lcs变形 (简单DP)
- AndroidStudio中使用.9图片
- unity3d 消息传递系统Messaging System
- 学习C++(2)之类的静态成员及静态成员函数
- UIPickerView内容居中显示,设置初始默认值
- 如何一次退出多个Activity
- 获取当前系统时间作为文件名
- 两个链表的交叉——值得注意的错误
- Heritrix3.3.0源码阅读 允许重复下载
- Redis源码分析二、Redis简单动态字符串
- sqlite3.OperationalError: unable to open database file
- 使用FMS 4.5(Flash Media Server 4.5) 搭建视频直播(HLS)