lin*_*asy 4 c++ syntax overloading operators
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);
}
Run Code Online (Sandbox Code Playgroud)
在给定的构造函数定义中,有人请解释此语法的含义或其预期用途和好处:
*this + author + comment + send;
Run Code Online (Sandbox Code Playgroud)
对我而言,似乎是在没有将其分配给任何东西的情况下进行连接/添加,这真的让我感到困惑,因为我无法理解其目的.
我已经在网上搜索了这个问题,但可能,我没有使用正确的术语来搜索它,因为我不知道究竟是什么类型的语法被称为.
我觉得它是最新的C++ 1x功能的一部分,但不确定,所以无法找到适合它的书.最后选择stackoverflow进行救援:-)
编辑:
我能提供的最相关的是它在头文件中的声明,它是:
struct reply_form : public cppcms::form {
cppcms::widgets::text author;
cppcms::widgets::textarea comment;
cppcms::widgets::submit send;
reply_form();
};
Run Code Online (Sandbox Code Playgroud)
EDIT2:Revision2(检查评论后再次更正)
好的,我能够追溯操作符+事物,并找出它被重载的方式:
inline form &operator + (form &f)
{
add(f);
return *this;
}
Run Code Online (Sandbox Code Playgroud)
所以这是运算符重载的情况.感谢您的回答.我最近已经迁移到C++并且发现了一些奇怪的东西,就像我在这个帖子中发布的那样: 用C++解释空白类函数,这在我看来是具有空白体的多功能列表,但后来我把它理解为语法和方法声明变量或调用基类构造函数.
感谢您的回答,这真的很有帮助,非常快!
由于我们不知道是什么reply_form,这个问题在完成时无法回答.你的问题更多的是关于程序而不是关于C++.
如果有副作用,该行*this + author + comment + send; 可能有reply_form::operator+副作用.
但是,传统上它不会(因为它没有直观意义,正如你所发现的那样).所以,要么这是班级设计中的错误,要么线条应该是这样的*this += author + comment + send;.
最有可能是一个流利的运算符被覆盖,以便为a添加字段reply_form.例如.
reply_form& reply_form::operator+ (const field& value)
{
this->add_field (value);
return *this;
}
Run Code Online (Sandbox Code Playgroud)