2014-09-23 93 views
0

我在一個我試圖改進的程序中遇到了這個問題。MQL4:Object =(Class *)NULL;

class Class1 
{ 
    private: 

    public: 
     Class1(); 
     ~Class1(); 

    protected: 

     Class2* Object2; 
}; 
Imbalance::Imbalance() 
    { 
    Object2 = (Class2*)NULL; 
    } 

有人能告訴我,當你創建對象,爲什麼實例化類時,你會作出對象=的類空的東西是什麼*表示。有沒有我可以閱讀的書?或者任何關於MQL4,C++中的類和對象的良好文檔或網頁...

回答

2

C++中的*表示它是指向對象的指針。

初始化一個指針到NULL意味着它指向無處(順便說一句nullptr現在是更好的選擇)。

通常情況下,在代碼中的那一刻,你會發現像一些聲明:

if (Object2 == NULL)  // if not pointing to an object 
    Object2 = new Class2; // create a new one 

基於C的大多數書籍++深入講解指針。

所以我的第一個答案是來自B.Stroustrup的「C++編程語言」。

一些在線教程:​​和here

編輯:MQL4語言

在MQL4語言,這是基於歷史上類似C語言的語法結構和最近(後生成509)的擴展帶來了一些更多的(從MQL5域借來的)時, *也是一個指向對象的指針,並且new動態地創建一個對象。但與C++不同的是,它不是直接指向內存空間的指針,而是使用descriptor概念的間接指針。

預定義的常量變量NULL意味着 - 就像在C++中那樣 - 沒有任何價值。它可以分配給任何其他基本類型的變量而無需轉換。允許將基本類型變量與NULL值進行比較。

在「New-MQL4」(發佈版本509)中,NULL也可以與指向由new運算符創建的對象的指針進行比較。

(感謝user3666197的額外MQL4具體信息)

+1

考慮這個問題的水平,應該在C++中添加一個基本的底漆,特別注意指針,'NULL'和'nullptr'。 – Deduplicator 2014-09-23 21:01:12

+0

我明白了。我在MQL中編寫不支持nullptr的編碼。 if null創建對象更有意義。我採取了一些課程,但之前沒有看到這個捷徑。現在我已經足夠深入瞭解書籍,知道現在在什麼區域。謝謝大家。 – Barklem 2014-09-23 22:15:40

相關問題