[英]What is the appropriate English language terminology for referring to the object in C++?
在C ++中引用“当前”对象的正确/适当的英语术语是什么。 例如,假设您在此实现的主体中编写注释:
Thing Thing::operator+(const Thing& other)
你有一个变量名“other”用于另一个对象,但是你用什么单词/表达来引用正在进行操作的对象?
在C ++中,它被称为this
对象,这就是我正在使用的东西。
编辑 :我第二次Neil关于operator+()
的评论更好地成为非成员。 对我来说,规范形式是实现+=
作为成员(它改变了左侧对象,因此应该可以访问它)并在它上面实现operator+
:
inline Thing operator+(Thing lhs, const Thing& rhs)
{
lhs += rhs;
return lhs;
}
(注意:我过去常常通过const引用传递lhs
,并在函数内执行复制,但不久前确信最好将它作为副本传递。)
“这个”的问题在于它是英语中的常用词。 作为一个在C ++上进行过广泛演讲的人,当我使用“this”来表示当前对象时,我总是觉得难以说话。 我从来没有想出一个完美的解决方案,但经常希望BS使用“自我”代替“这个”。
无论是“这个”,还是“这个实例”。 如:
/** \brief Adds another Thing to this instance.
* A reference to this instance is returned.
*/
Thing& Thing::operator+(const Thing& other);
标记是Doxygen ,对于那些不熟悉的人。
我倾向于在文档中使用与在代码中使用相同的约定:我将其隐含。 例如“添加另一个东西并返回总和”。
当我需要明确时,它是由其他程序员阅读的评论。 他们知道C ++, *this
很容易理解。 如“添加其他东西*this
加入所有成员,除了东西:: foo的,这将成为0(参见错误#42)”
首先, this
指针专门用于此目的。 因此,将当前对象称为“此对象”是很自然的。
也可以使用“左操作数”和“右操作数”,因为您的运算符是二进制的。
在评论中,我通常会说“这个”或“我自己”(因为我通常用第一人称复数写评论,但是当我们只有一个对象时,“我们自己”太奇怪了)。
在文档中,我说“ <whatever>
”。 如果这是不明确的(因为该函数将另一个作为参数,例如),我说“this object”或“this <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
。
如果你在谈论它时确实需要一个名字,那么“自我”是有道理的。 我有时将它称为“这个对象”。
在我看来,如果你想引用当前对象,那么将其称为当前对象就不会出错。
C ++中没有当前对象 ,但只有指向成员函数中可用对象的 指针才是此指针 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.