2014-04-29 47 views
-1

我想知道是否有任何方法將更改的變量保留在類中。例如:保持更改的類變量

class Numbers{ 
    int x; 

    Numbers(); 

public: 
    void set(int y); 
    void print(); 
}; 

void Numbers::set(int y){ 
    x=y; 
} 

void Numbers::print(){ 
    cout<<x<<endl; 
} 


int main(){ 
    Numbers x; 
    x.set(3); 
    x.print(); 

    Numbers x2; 
    x2.print(); // here I want to display "3", not 0 as default 

    return 0; 
} 

但是我做要使用的類之外​​的全局變量作爲臨時變量。

+9

看看'static' varibales,它們在一個類的所有實例中共享。 – clcto

+0

如何在int main中定義靜態變量?我知道我可以這樣寫:int Numbers :: x = 10;但如何在int main中做到這一點? – user3586374

回答

4

你必須定義變量static

class Numbers{ 
    static int x; 

public: 
    static void set(int i){ x = i; } 
    void print(){ std::cout << x << std::endl; } // maybe this should be static 
}; 

int Numbers::x = 0; 


int main() 
{ 
    Numbers x1, x2; 
    x1.print(); // prints 0 

    x1.set(1); 
    // above is same as 
    Numbers::set(1); 

    x1.print(); // prints 1 

    x2.print(); // prints 1 
} 
0

你可以只聲明這樣

static int myVariable = 0; 

這裏是靜態變量

內使用的靜態的一些信息功能是最簡單的。它僅僅意味着 ,一旦變量被初始化,它將一直保存在內存 中,直到程序結束。你可以把它看作是說變量會保持其值,直到程序 完全結束。例如,您可以使用靜態變量來簡單地通過包含 行來記錄函數被調用的次數。static int count = 0;並計算++;在函數內部。因爲 count是一個靜態變量,所以行「static int count = 0;」只會執行 一次。無論何時調用該函數,count都會爲其分配最後一個值 。

您可以隨時閱讀更多在這裏:因爲你聲明的類爲私有的默認構造函數,並沒有把它定義

的所有代碼

http://www.cprogramming.com/tutorial/statickeyword.html

2

首先不會被編譯。

至於你的問題,那麼你可以使用靜態數據成員。例如

#include <iostream> 

class Numbers 
{ 
private: 
    static int x; 
public: 
    Numbers() {} 

    void set(int y) { x = y; } 
    void print() const { std::cout << x << std::endl; } 
}; 

int Numbers::x; 

int main() 
{ 
    Numbers x; 
    x.set(3); 
    x.print(); 

    Numbers x2; 
    x2.print(); 
} 

此外,這些成員函數可以定義爲靜態成員函數。