gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:14 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com