2009-12-14 45 views
3

在C++中引用「當前」對象的正確/恰當的英文術語是什麼?例如,假設你正在寫在執行這個身體評論:在C++中引用對象的適當的英語術語是什麼?

Thing Thing::operator+(const Thing& other) 

你有變量名「其他」以用於其他對象,但你用什麼詞/表達指到正在進行操作的對象?

+2

只是一點nit-pickery,但運算符+()應該幾乎可以肯定地實現爲一個自由函數,在這種情況下,沒有「當前」的對象。 – 2009-12-14 15:42:59

+0

我通常使用'rhs'而不是'other',因爲它是右邊的對象,並且很容易與'lhs'和'rhs'進行網格化,之後我可以使用它來免費使用。 – 2009-12-14 19:48:11

回答

2

首先,有this指針專爲此目的。因此,將當前對象稱爲「這個對象」是很自然的。

11

在C++中,它被稱爲this對象,這就是我正在使用的。

編輯:我第二尼爾的評論關於operator+()更好的是一個非成員。對我來說,規範形式是實施+=作爲成員(它改變了左手側對象,因此應能獲得的話)和在它的上面實施operator+

inline Thing operator+(Thing lhs, const Thing& rhs) 
{ 
    lhs += rhs; 
    return lhs; 
} 

(注:我用也可以通過const引用來傳遞lhs,並且在函數內執行復制,但是前一段時間確信最好將其作爲副本傳遞給它。)

+0

而人們發現了Boost.operators庫:D不僅你寫得更少,而且它甚至會強制執行這個特定的行爲。 – 2009-12-14 19:47:16

2

也可以使用「左操作數」和「右操作數「,因爲你的操作符是二進制的。

-2

在C++中沒有當前對象,但只指針對象 avalilable在成員函數是這個指針

+2

雖然這在技術上是正確的;在查看面向對象的語言時,這不是一個特別有用的方法。 – 2009-12-14 12:41:33

+0

我不明白你在說什麼...... – Ashish 2009-12-14 12:56:35

+0

呃,是的,那裏**是**目前的對象。你認爲'這個'正指向什麼? – 2009-12-14 16:42:34

6

「this」的問題在於它是英語中常見的詞。作爲在C++上廣泛講授的人,當我用「this」表示當前對象時,我總是發現在講話時遇到困難。我從來沒有想出一個完美的解決方案,但通常希望BS使用「自我」而不是「這個」。

+0

「這個指針」有點更明確,但是,很難理想。 – jalf 2009-12-14 12:48:26

+0

而且更糟糕的是:提問者並不是在談論「這個指針」,而是在談論「這個指針的真實性」。 – 2009-12-14 13:14:53

+0

是真的。如果它被稱爲「自我」而不是「this」,並且是實際引用而不是指針,它會很好。 – jalf 2009-12-14 13:42:51

3

無論是「this」還是「this instance」。如:

/** \brief Adds another Thing to this instance. 
* A reference to this instance is returned. 
*/ 
Thing& Thing::operator+(const Thing& other); 

標記爲Doxygen,對於那些不熟悉的人。

3

我傾向於在文檔中使用與我在代碼中使用的相同的約定:我將其隱含起來。例如。 「添加另一個東西,並返回總和」。

當我需要明確時,它是爲其他程序員閱讀的評論。他們知道C++,*this很容易理解。例如。 「添加另一個東西到*this添加所有成員除Thing :: foo將變爲0(見錯誤#42)」

0

在評論中,我通常會說「this」或「我自己」(因爲我通常寫評論以第一人稱複數形式存在,但當只有一個對象時,「我們」太奇怪了)。

在文檔中,我說「<whatever>」。如果這是不明確的(因爲該函數將另一個作爲參數,例如),我說「這個對象」或「這<whatever>」。<whatever>可以是類名,也可以是文檔中用於解釋類所代表的其他術語。

/** 
* An utterly useless write-only counter, with arbitrary initial value. 
*/ 
class Counter { 
    unsigned int count; 
public: 
    /** 
    * Increments the counter 
    */ 
    Counter &operator++() { 
     // We need to add 1 to ourself. I found a snippet online that does it: 
     ++count; 
     // return ourself 
     return *this; 
    } 
    /** 
    * Adds together this counter and "other". 
    */ 
    Counter operator+(const Counter &other) const { 
     Counter result; 
     // new count is our count plus other count 
     result.count = count + other.count; 
     return result; 
    } 
}; 
0

如果實現類範圍外的操作,那麼參數往往命名lhsrhs(左側和右側)。

因爲您已經有了this指針,所以您並不需要當前對象的名稱。在靜態方法內部,有時需要一個指向該類的對象的指針(例如調用一個實例方法)。在這些情況下,我使用變量名稱pThis

如果你在談論它的時候確實需要一個名字,那麼「自我」是有道理的。我有時把它稱爲「這個對象」。

0

在我看來,如果你想引用當前對象,你真的不會錯誤地稱它爲當前對象

+0

然後,也許你可以。對我來說,「目前的對象」(非本地的,所以我可能是錯的)意味着當前的時間跨度。但是,在同一時間段內,「其他」與當前一樣。 – sbi 2009-12-14 20:46:55

相關問題