繁体   English   中英

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

[英]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;
    }
};

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM