C++的靜態數據成員的使用
最近做的是Xcode下面的C++開發程序,Xcode默認添加C++類的.h和.cpp文件,以前對C++學的一知半解,現在遇到問題了,在類中寫靜態數據成員,靜態成員函數不用說,很簡單。在.h文件中聲明一個靜態函數,例如
static void printString();
然後在.cpp文件中寫相應的實現方法
void StaticData::printString()
{
printf("printString ... ");
}
這樣就實現了靜態函數的功能,當在類外面調用的時候,既可以通過對象調用,又可以通過類名直接調用,例如
StaticData *data = new StaticData();
data->printString();
StaticData::printString();
看見了吧,很簡單的,我就不多說了,下面說說靜態數據成員吧。
靜態數據成員首先在.h文件中聲明,如下
static int data;
然後需要在.cpp文件中實現賦值,注意不是在.cpp文件中的某個函數中,而是.cpp文件中聲明,如下
int StaticData::data = 0;
這樣這個靜態數據成員纔可以使用,還有一種是const static類型的數據,這種數據可以在.h文件中直接聲明並賦值
static const int finalData = 100;
好了,靜態數據成員就介紹到這裏,下面貼出我寫的一個簡單的不能再簡單的小例子。
//
// StaticData.h
// CPlusTest
//
// Created by 江南岸 on 13-3-26.
// Copyright (c) 2013年 ZhangQu. All rights reserved.
//
#ifndef __CPlusTest__StaticData__
#define __CPlusTest__StaticData__
#include <iostream>
class StaticData
{
public:
//靜態數據成員
static int data;
//const static類型可以直接在.h文件中聲明並賦值,注意這種變量的數值不能改啊
static const int finalData = 100;
//成員函數
void printData();
//靜態成員函數
static void printString();
};
#endif /* defined(__CPlusTest__StaticData__) */
//
// StaticData.cpp
// CPlusTest
//
// Created by 江南岸 on 13-3-26.
// Copyright (c) 2013年 ZhangQu. All rights reserved.
//
#include "StaticData.h"
//實現靜態成員函數
int StaticData::data = 0;
//普通成員函數實現
void StaticData::printData()
{
printf("this data is %d %d",data,finalData);
}
//靜態成員函數的實現,和普通成員函數實現沒有區別
void StaticData::printString()
{
printf("printString ... ");
}
//
// main.cpp
// CPlusTest
//
// Created by 江南岸 on 13-3-26.
// Copyright (c) 2013年 ZhangQu. All rights reserved.
//
#include <iostream>
#include "StaticData.h"
int main(int argc, const char * argv[])
{
StaticData *data = new StaticData();
//兩種調用靜態成員函數的方法
data->printString();
StaticData::printString();
//兩種調用靜態數據成員的方法
data->data = 10;
StaticData::data = 100;
return 0;
}