2015-12-27 27 views
0

我正在通過以下鏈接瞭解該主題。 Over Loading Typecasts C++重載Typecasts C++,它是如何工作的?

class Cents 
{ 
private: 
    int m_nCents; 
public: 
    Cents(int nCents=0) 
    { 
     m_nCents = nCents; 
    } 

    // Overloaded int cast 
    operator int() { return m_nCents; } 

    int GetCents() { return m_nCents; } 
    void SetCents(int nCents) { m_nCents = nCents; } 
}; 

現在,在我們的例子中,我們調用PrintInt()這樣的:

int main() 
{ 
    Cents cCents(7); 
    PrintInt(cCents); // print 7 

    return 0; 
} 

我不明白如何PrintInt(cCents)映射到在打印7和使用重載INT操作。

+1

您鏈接到確切解釋發生了什麼事的文章。你不瞭解什麼部分? – Mat

+0

是的,實際上這篇文章解釋得非常好...... – J3soon

+0

從鏈接文章中:「編譯器會首先注意到PrintInt接受一個整數參數,然後它會注意到cCents不是int,最後它會查看是否我們提供了一種將Cents轉換爲int的方法,因爲我們已經調用了我們的運算符int()函數,該函數返回一個int值,並將返回的int值傳遞給PrintInt()。這就解釋了*究竟發生了什麼。 –

回答

2

重載INT投是指當一個Cents變量被鑄造爲int,它會返回m_nCents

// Overloaded int cast 
operator int() { return m_nCents; }