Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个JS语法可以在C++;_Javascript_C++_Syntax - Fatal编程技术网

Javascript 这个JS语法可以在C++;

Javascript 这个JS语法可以在C++;,javascript,c++,syntax,Javascript,C++,Syntax,所以我写了很多JS,我非常喜欢这种语法特性。我不确定这将被称为什么,但下面是一个例子 object.function1().function2().function3() 我知道JS可以做到这一点,因为一切都被视为第一类对象。但我想知道这是否可能在C++中?那么,C++中的一个简短例子是什么? C++, < 是对实例的指针;您必须取消引用它才能返回实例: return *this; 如果您想避免复制,以便可以对同一对象进行变异,那么您将返回一个引用。下面是一个例子: struct X {

所以我写了很多JS,我非常喜欢这种语法特性。我不确定这将被称为什么,但下面是一个例子

object.function1().function2().function3()

我知道JS可以做到这一点,因为一切都被视为第一类对象。但我想知道这是否可能在C++中?那么,C++中的一个简短例子是什么?

C++,<代码> < <代码>是对实例的指针;您必须取消引用它才能返回实例:

return *this;
如果您想避免复制,以便可以对同一对象进行变异,那么您将返回一个引用。下面是一个例子:

struct X
{
    X& f() { std::cout << ++x << std::endl; return *this; }                    /*
    ^^                                      ^^^^^^^^^^^^^                      */
private:
    int x = 0;
};

int main()
{
    X x;
    x.f().f().f(); // 1 2 3
}
struct X
{

X+F.({ C++)中的STD::CUT< P>,<代码> < <代码>是对该实例的指针;您必须取消引用,以便返回实例:

return *this;
如果要避免复制,以便对同一对象进行变异,则应返回一个引用。以下是一个示例:

struct X
{
    X& f() { std::cout << ++x << std::endl; return *this; }                    /*
    ^^                                      ^^^^^^^^^^^^^                      */
private:
    int x = 0;
};

int main()
{
    X x;
    x.f().f().f(); // 1 2 3
}
struct X
{

你的意思是这样的:

class A{
public:
    A& foo(){ return *this; };
    A& bar() { return *this; };
};
然后

A a;
a.foo().bar();

你的意思是这样的:

class A{
public:
    A& foo(){ return *this; };
    A& bar() { return *this; };
};
然后

A a;
a.foo().bar();

是的。你知道,如果所有函数都返回C++中正确的对象的引用,你可以这样做。哇,这是我想的更明显的。弗莱德感谢你的评论,“JS可以这样做,因为所有的东西都被当作第一类对象来处理”是不正确的。JavaScript的功能性质与启用方法无关。链接(虽然这是您可以执行
object.function('what')('the')('heck')
-其中
object.function()
返回一个传递'the'的函数,而该函数又返回一个传递'heck'的函数,但我永远不想维护该代码!)我只是指出了这一点,因为混乱可能会给你带来一些微妙的问题。我的意思是,我不必明确地把链式JS方法的返回写为我要运行的对象的类型。C++的下一个方法。如果所有函数*返回C++中正确的对象的引用,你可以这样做。哇,那真是太多了。更明显的是,我想。@Fred感谢你的链接你的评论“JS可以做到这一点,因为一切都被视为一类对象”是不正确的。Javascript的功能性质与启用方法链接无关(尽管这是你可以做
object.function('what')('the')('heck'))
-其中
object.function()
返回一个传递“the”的函数,而该函数又返回一个传递“heck”的函数,但我永远不想维护该代码!)我只是指出这一点,因为这种混乱可能会给您带来一些微妙的问题。我的意思是,我不必显式地将链式JS方法的返回写入我要运行下一个方法的对象的类型。关于返回引用的观点很好,否则它将返回一个新的X副本,调用默认副本constructor.所以我想用它来创建一个链式对象。set().thisVaraible();我的函数设置类似于class&set(){return*this;},实际上这只是创建了一个副本。我怎么可能用错了呢?@MatUtter
set()
没有返回该代码中的副本。也许你应该发布另一个问题,并提供更详细的信息,以便获得全面的答案。:)实际上没有问题,我只是误解了另一个奇怪的问题。非常感谢,尽管这正是我要找的:)@MatUtter太好了!很高兴我能提供帮助!=)关于ret的观点很好urn引用,否则它将返回X的新副本,调用默认的副本构造函数。因此,我想使用它,以便创建类似于链的对象。set().thisVaraible();我的函数设置类似于class&set(){return*this;}事实上,这只是创建了一个副本。关于我如何使用这个错误,有什么想法吗?@MatUtter
set()
没有返回该代码中的副本。也许你应该发布另一个问题,提供更详细的信息,以便获得全面的答案。:)事实上没有问题,我只是误解了另一个奇怪的故障。非常感谢,尽管这正是我要找的:)@MatUtter太好了!很高兴我能提供帮助!=)