C++类静态数据成员与类静态成员函数
2013-07-04 17:53
197 查看
如果把类中的函数都定义成静态函数或者静态数据成员,这样相当于在编译时就分配了空间,这样不需要实体对象也可以调用类中的函数了。
并且静态数据成员是类所有的,是一个全局变量,而且不是对象所有的,并且是唯一的,和继承类共享一个内存空间。
声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。
在静态成员函数之中使用静态成员,不能使用this指针。
下面看下代码:
这样使用静态数据成员变量实现了在静态成员函数中传递参数:
在下面的2个方法中使用了静态数据成员变量。
并且静态数据成员是类所有的,是一个全局变量,而且不是对象所有的,并且是唯一的,和继承类共享一个内存空间。
声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。
在静态成员函数之中使用静态成员,不能使用this指针。
下面看下代码:
class PrizeList :public CCLayer { public: static int jsonLength; private: string IP = "http://192.168.1.5"; string serverIP = IP+"/prize/list.page"; public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(PrizeList); void requestService(); void displayPrizeList(); static size_t writeData(void *ptr,size_t size, size_t nmemb, void *userData); };
#include "PrizeList.h" //静态数据成员变量的初始化在.cpp文件 int PrizeList::jsonLength = 0;
这样使用静态数据成员变量实现了在静态成员函数中传递参数:
在下面的2个方法中使用了静态数据成员变量。
void PrizeList::displayPrizeList() { string filePath = CCFileUtils::sharedFileUtils()->getWritablePath()+"myPrizeList.txt"; char str[9999]; CCLOG("jsonLength %d",this->jsonLength); FILE *fp = fopen(filePath.c_str(), "rb"); //fgets(str, this->jsonLength, fp); } size_t PrizeList::writeData(void *ptr, size_t size, size_t nmemb, void *userData) { static int total; static int flag = 1; char *data = NULL; data = (char *)ptr; string filePath = CCFileUtils::sharedFileUtils()->getWritablePath()+"myPrizeList.txt"; FILE *fp = fopen(filePath.c_str(), "ab"); int writeen = fwrite(ptr, size, nmemb, fp); fclose(fp); CCLOG("data: %s",data); CCLOG("write_data 第%d次",flag++); CCLOG("写入字节数量是 %d",writeen); total += writeen; CCLOG("写入字节总数量是 %d",total); CCLOG("写入字节总数量是 %dk",total/1024); jsonLength = total; return writeen; }
相关文章推荐
- c++类静态数据成员与类静态成员函数
- C++类中常量数据成员和静态数据成员初始化
- 浅谈C++类静态数据成员与类静态函数成员
- C++类中具有静态数据成员
- C++类中静态成员数据和静态成员函数的自我理解
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- C++类静态数据成员与类静态成员函数
- 2017-12-14 乱入一道C++类的学习的题(静态数据成员初始化)
- C++类静态数据成员与类静态成员函数
- C++类的三种数据成员:常量(const)、静态(static)、普通 的赋值方式
- c++类的成员函数、数据成员存储方式(是否属于类的对象)
- C++类静态成员与类静态成员函数
- c++类不含有数据成员(静态除外),则不会为该类实例分配存储空间,该类实例只占用一个字节空间
- C++类的静态数据成员及其用法
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- C++类中的常数据成员和静态数据成员的区别
- C++类中静态数据成员MAP如何初始化
- 静态数据成员和静态数据成员函数
- C++类中的常数据成员和静态数据成员的区别