2013-06-04 57 views
0

在python中,我們可以使用self關鍵字在類的成員函數中聲明類變量,隨後該類的其他成員函數可以使用它。 如何在C++中做這樣的事情。在C++的類方法中聲明類變量

Python代碼:

class abc(): 
{ 
    def __init__(self): 
    self.help='Mike' #self.help is the class variable and can be used in other methods 
    def helpf(): 
    morehelp=self.help+' Bike' 
} 

C++代碼:

class abc 
{ 
    public: 
    abc(); 
    public: 
    void helpf(void); 
}; 
abc::abc() 
{ 
    string help="Mike";  
} 
void abc::helpf() 
{ 
    string morehelp=this->helpf+" Bike";// this keyword sounded like the one but... 
} 
+3

這不是Python,你的例子不是「類變量」,它是_instance_變量 –

+0

C++是一種靜態類型語言,而Python是一種動態類型語言。這個事實允許你在一個類的方法中創建實例變量,只需給它們賦值一個前綴爲'self.'的值即可。在C++中沒有任何等價物 - 所有成員必須先聲明才能被引用。 – martineau

回答

3

在C++中沒有辦法做這樣的事情。 你應該在類中聲明成員,而不是在函數中聲明。

1

你不能在C++中聲明在函數內部類成員。你必須在功能之外聲明它們,比如在JAVA中

class abc 
{ 
public: 
    int publicInt; // This is a public class variable, and can be accesed from outside the class 
    int abc(); 
private: 
    float privateFloat; // This is private class variable, and can be accesed only from inside the class and from friend functions 
    void helpf(void); 
}; 
0

這是不可能的。在成員函數內聲明變量對於該成員函數是本地的。如果你想在你的成員函數中使用變量,你必須聲明類變量。

0

這適用於Python,因爲Python允許您僅通過分配給它就可以將屬性添加到任意位置的對象。它附加到那個對象,而不是對象的類。爲了與Python的動態語言理念保持一致,特別是在缺乏變量聲明的情況下,所有這些 - 包括關於哪些屬性存在或不存在的決定 - 在運行時處發生

C++的顯式沒有一個具有屬性的特定對象的概念 - 全部成員變量與類關聯,即使它們在每個實例上都有獨立的值。一組全部可能的成員變量以及它們所保存的類型是在整個類中共享的,並在編譯時設置。正因爲如此,你要求的東西在C++中基本沒有意義。