这个JS语法可以用C++模仿吗?

Can this JS syntax be mimicked in C++

本文关键字:C++ JS 语法 这个      更新时间:2023-10-16

所以我写了很多JS,我是语法的这个功能的粉丝。我不确定这会叫什么,但下面是一个例子。

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

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

在C++中,this 是指向实例的指针;您必须取消引用它才能返回实例:

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
}

你的意思是这样的:

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

然后

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