C++对返回*this的成员函数的重复调用顺序

C++ Order of Repeated Calls to Member Functions that return *this

本文关键字:调用 顺序 函数 成员 返回 this C++      更新时间:2023-10-16

所以,假设我创建了一个具有成员函数的对象,如下所示:

template <typename T> class MyClass {
  T state_;
public:
  MyClass &MyFunction(stateType state) {
    Order_Dependent_Change_Of_State(state);
    return *this;
  }
};

现在,假设我去做以下事情:

MyClass <sometype> IAmBeingLazyOrClever;
IAmBeingLazyOrClever
  .MyFunction(state1)
  .MyFunction(state2)
  .MyFunction(state3)
  ;

状态更新的顺序是否保证了状态1将在状态2之前应用于状态3?启用优化的情况如何?

可以保证程序的行为就像按照编写的顺序调用方法一样。

方法将按该顺序调用,以便可以返回对该类的引用,从而可以进行后续(链式)调用。优化对此没有影响。因此,是的,对象的_state通过每次连续调用进行更新。