C++ 请解释一下这个C++;语法似乎不完整或缺少赋值?

C++ 请解释一下这个C++;语法似乎不完整或缺少赋值?,c++,syntax,operators,overloading,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 + se

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

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);
}
对我来说,它似乎是一个连接/加法,没有分配给任何东西,这真的让我困惑,因为我无法理解它的目的

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

我觉得这似乎是最新的C++1x特性的一部分,但不确定,因此无法找到适合它的书。最后选择stackoverflow进行救援:-)

编辑:

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

*this + author + comment + send;
编辑2:修订2(检查注释后再次更正)

好的,我能够追踪到operator+的东西,发现它过载的方式:

struct reply_form : public cppcms::form {
    cppcms::widgets::text author;
    cppcms::widgets::textarea comment;
    cppcms::widgets::submit send;
    reply_form();
};
这就是运算符重载的情况。谢谢你的回答。我最近迁移到C++,发现了一些奇怪的东西,正如我在这个帖子中所说:
在我看来,它是一个多功能列表,有着空白的主体,但后来我把它理解为一种语法和一种声明变量或调用基类构造函数的方式


谢谢你的回答,这真的很有帮助而且很快

因为我们不知道什么是
回复表
,所以这个问题无法完整回答。你的问题更多有关程序而不是C++。 行<代码>*此+作者+评论+发送回复表单::operator+有副作用,则code>可能有副作用


但是,按照惯例,它不会(因为正如你所发现的那样,它没有直观的意义)。因此,要么这是类设计中的一个错误,要么这一行应该是这样的:
*this+=author+comment+send 

< P>由于C++中,几乎所有操作符都可以重载,这可能意味着什么。实际上,该行是对函数
操作符+
的嵌套调用序列:

    inline form &operator + (form &f)
    {
        add(f);
        return *this;
    }
例如,您需要查看
reply\u表单
类是如何重载
运算符+

operator+(operator+(operator+(*this, author), comment), send);

在这种情况下将正常工作。

最有可能是覆盖一个流畅的运算符,以便将字段添加到
回复表单中。例如

reply_form& operator+(reply_form& lValue,const reply_form& rValue);
小东西:

此代码

reply_form& reply_form::operator+ (const field& value)
{
    this->add_field (value);
    return *this;
}
可以并且应该写为:

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);
}
实际上,新代码应该使用这个更详细但更清晰的API

操作符+
是为了向后兼容而保留的,可以使用
在一些非最新的示例中。

那么,
reply\u form::operator+(…)
是如何定义的,它有哪些重载,以及它的作用是什么?只有你能回答这个问题,你有代码…编辑2中的重载与你想知道的行无关
a+b
a++
是不同的运算符。“但后来我把它理解为一种语法和一种声明变量或调用基类构造函数的方式”否。它是初始化数据成员或显式调用基类构造函数的一种方式(而不是在没有参数的情况下隐式调用)。这将是一个骇人听闻的设计。这就是为什么所有的语言设计者在意识到操作符重载可能导致的后果后都避免使用它的原因你说的
操作符->()
调用FireMissile()是什么意思?`:)它仍然可以非常强大、有效和直观。它只需要像其他任何东西一样正确使用。头脑正常的人都不会写变异的
运算符+
,这就是
运算符+=
的作用。@Remus:这与运算符重载无关。这只是糟糕的设计…'DrawCicle()调用FireMissile()是什么意思?“哦,谢谢你的澄清,artyom,现在看起来很简单!”
reply_form::reply_form()
{
    using cppcms::locale::translate;

    author.message(translate("Author"));
    author.limits(1,64);

    comment.message(translate("Comment"));
    comment.limits(1,256);

    send.value(translate("Send"));

    add(author);
    add(comment);
    add(send);

}