在C++中引用「當前」對象的正確/恰當的英文術語是什麼?例如,假設你正在寫在執行這個身體評論:在C++中引用對象的適當的英語術語是什麼?
Thing Thing::operator+(const Thing& other)
你有變量名「其他」以用於其他對象,但你用什麼詞/表達指到正在進行操作的對象?
在C++中引用「當前」對象的正確/恰當的英文術語是什麼?例如,假設你正在寫在執行這個身體評論:在C++中引用對象的適當的英語術語是什麼?
Thing Thing::operator+(const Thing& other)
你有變量名「其他」以用於其他對象,但你用什麼詞/表達指到正在進行操作的對象?
首先,有this
指針專爲此目的。因此,將當前對象稱爲「這個對象」是很自然的。
在C++中,它被稱爲this
對象,這就是我正在使用的。
編輯:我第二尼爾的評論關於operator+()
更好的是一個非成員。對我來說,規範形式是實施+=
作爲成員(它改變了左手側對象,因此應能獲得的話)和在它的上面實施operator+
:
inline Thing operator+(Thing lhs, const Thing& rhs)
{
lhs += rhs;
return lhs;
}
(注:我用也可以通過const引用來傳遞lhs
,並且在函數內執行復制,但是前一段時間確信最好將其作爲副本傳遞給它。)
而人們發現了Boost.operators庫:D不僅你寫得更少,而且它甚至會強制執行這個特定的行爲。 – 2009-12-14 19:47:16
也可以使用「左操作數」和「右操作數「,因爲你的操作符是二進制的。
有在C++中沒有當前對象,但只指針對象 avalilable在成員函數是這個指針。
雖然這在技術上是正確的;在查看面向對象的語言時,這不是一個特別有用的方法。 – 2009-12-14 12:41:33
我不明白你在說什麼...... – Ashish 2009-12-14 12:56:35
呃,是的,那裏**是**目前的對象。你認爲'這個'正指向什麼? – 2009-12-14 16:42:34
無論是「this」還是「this instance」。如:
/** \brief Adds another Thing to this instance.
* A reference to this instance is returned.
*/
Thing& Thing::operator+(const Thing& other);
標記爲Doxygen,對於那些不熟悉的人。
我傾向於在文檔中使用與我在代碼中使用的相同的約定:我將其隱含起來。例如。 「添加另一個東西,並返回總和」。
當我需要明確時,它是爲其他程序員閱讀的評論。他們知道C++,*this
很容易理解。例如。 「添加另一個東西到*this
添加所有成員除Thing :: foo將變爲0(見錯誤#42)」
在評論中,我通常會說「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;
}
};
如果實現類範圍外的操作,那麼參數往往命名lhs
和rhs
(左側和右側)。
因爲您已經有了this
指針,所以您並不需要當前對象的名稱。在靜態方法內部,有時需要一個指向該類的對象的指針(例如調用一個實例方法)。在這些情況下,我使用變量名稱pThis
。
如果你在談論它的時候確實需要一個名字,那麼「自我」是有道理的。我有時把它稱爲「這個對象」。
在我看來,如果你想引用當前對象,你真的不會錯誤地稱它爲當前對象。
然後,也許你可以。對我來說,「目前的對象」(非本地的,所以我可能是錯的)意味着當前的時間跨度。但是,在同一時間段內,「其他」與當前一樣。 – sbi 2009-12-14 20:46:55
只是一點nit-pickery,但運算符+()應該幾乎可以肯定地實現爲一個自由函數,在這種情況下,沒有「當前」的對象。 – 2009-12-14 15:42:59
我通常使用'rhs'而不是'other',因爲它是右邊的對象,並且很容易與'lhs'和'rhs'進行網格化,之後我可以使用它來免費使用。 – 2009-12-14 19:48:11