C++的靜態數據成員的使用

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;
}






   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章