c++ - 请解释这个似乎不完整或缺少赋值的 C++ 语法?

标签 c++ syntax operators overloading

reply_form::reply_form()
{
    using cppcms::locale::translate;
    author.message(translate("Author"));
    comment.message(translate("Comment"));
    send.value(translate("Send"));
    *this + author + comment + send;
    author.limits(1,64);
    comment.limits(1,256);
}

在给定的构造函数定义中,有人请解释此语法的含义或其预期用途和好处:

*this + author + comment + send;

对我来说,它看起来好像是在没有分配给任何东西的情况下完成的连接/加法,这让我很困惑,因为我无法理解它的目的。

我已经在网络上针对这个问题进行了很好的搜索,但可能我没有使用正确的术语来搜索它,因为我不知道这种类型的语法到底被称为什么。

我觉得它好像是最新的 C++1x 特性的一部分,但不确定,所以找不到合适的书。最终选择了 stackoverflow 进行救援:-)

编辑:

我能提供的最相关的是它在头文件中的声明,即:

struct reply_form : public cppcms::form {
    cppcms::widgets::text author;
    cppcms::widgets::textarea comment;
    cppcms::widgets::submit send;
    reply_form();
};

EDIT2:Revision2(检查评论后再次更正)

好的,我能够追溯 operator+ 的东西,并找出它被重载的方式:

    inline form &operator + (form &f)
    {
        add(f);
        return *this;
    }

这就是运算符重载的情况。感谢您的回答。我最近迁移到 C++ 并发现了一些奇怪的事情,正如我在此线程中发布的那样: Explain blank class functions in C++在我看来,它是带有空白主体的多功能列表,但后来我将其理解为一种语法和一种声明变量或调用基类构造函数的方法。

感谢您的回答,它真的很有帮助而且非常快!

最佳答案

因为我们不知道reply_form 是什么,这个问题无法完整回答。你的问题更多是关于程序而不是 C++。

*this + author + comment + send; 如果 reply_form::operator+ 有副作用,可以有副作用。

但按照惯例,它不会(因为它没有直觉意义,正如您所发现的那样)。因此,要么这是类设计中的错误,要么该行应该读作类似 *this += author + comment + send; 的内容。

关于c++ - 请解释这个似乎不完整或缺少赋值的 C++ 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960780/

相关文章:

c++ - Visual Studio 2010 查看程序流程 (C++)

Javascript 条件语句导致其他函数停止工作

python - 这个列表理解是如何工作的?

language-agnostic - 现有语言是否允许在函数名称中的任意位置使用函数参数?

java - C和Java中的逻辑差异

c++ - 无符号整数表示

c++ - 您应该在只有定义的文件中使用 extern "C"吗?

c++ - 从像素标签创建 RGB 图像

swift - ?= 运算符在 Swift 中有什么作用?

haskell - 运算符作为 Haskell 中的参数