在C ++中引用对象的适当英语术语是什么?

时间:2009-12-14 12:00:19

标签: c++ terminology

在C ++中引用“当前”对象的正确/适当的英语术语是什么。例如,假设您正在撰写评论的主体:

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

你有一个变量名“other”用于另一个对象,但你用什么单词/表达来引用正在进行操作的对象?

10 个答案:

答案 0 :(得分:11)

在C ++中,它被称为this对象,这就是我正在使用的对象。

编辑 :我再次提到Neil关于operator+()更好地成为非会员的评论。对我来说,规范形式是将+=作为成员实现(它改变了左侧对象,因此应该可以访问它)并在其上实现operator+

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

(注意:我过去常常通过const引用传递lhs,并在函数内执行复制,但不久前确信最好将它作为副本传递。)

答案 1 :(得分:6)

“这个”的问题在于它是英语中的常用词。作为一个在C ++上进行过广泛演讲的人,当我使用“this”来表示当前对象时,我总是觉得难以说话。我从来没有想出一个完美的解决方案,但经常希望BS使用“自我”代替“这个”。

答案 2 :(得分: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 :(得分:3)

我倾向于在文档中使用与在代码中使用相同的约定:我将其隐含。例如。 “添加另一件事并返还总和”。

当我需要明确时,它是由其他程序员阅读的评论。他们知道C ++,*this很容易理解。例如。 “通过添加除Thing :: foo之外的所有成员,将另一件事添加到*this,这将成为0(参见错误#42)”

答案 4 :(得分:2)

首先,有专门用于此目的的this指针。因此,将当前对象称为“此对象”是很自然的。

答案 5 :(得分:2)

也可以使用“left operand”和“right operand”,因为你的运算符是二进制的。

答案 6 :(得分:0)

在评论中,我通常会说“这个”或“我自己”(因为我通常用第一人称复数写评论,但是当我们只有一个对象时,“我们自己”太奇怪了。)

在文档中,我说“<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;
    }
};

答案 7 :(得分:0)

如果在类范围之外实现运算符,则参数通常命名为lhsrhs(左侧和右侧)。

您实际上并不需要当前对象的名称,因为您已经拥有this指针。在静态方法内部,有时需要指针作为类的对象(例如,调用实例方法)。在这些情况下,我使用变量名pThis

如果你在谈论它时确实需要一个名字,那么“自我”是有意义的。我有时称它为“这个对象”。

答案 8 :(得分:0)

在我看来,如果你想引用当前对象,那么称它为当前对象就不会出错。

答案 9 :(得分:-2)

C ++中没有当前对象,但成员函数中只有指向对象的指针此指针