2013-12-06 2 views
1

Так, скажем, я создаю объект с функцией члена следующим образом:C++ Порядок повторных вызовов функций-членов, которые возвращают * этот

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) 
    ; 

Гарантирован ли заказ государственных обновлений таким образом, что state1 будет применяться до состояния2 до состояния3? Как насчет того, когда оптимизация включена?

ответ

2

Гарантируется, что программа будет вести себя так, как если бы методы вызывались в написанном порядке.

+0

Благодарим за этот ответ. – StackMonkey

1

Методы имеют, которые должны быть вызваны в этом порядке, чтобы можно было ссылаться на класс, чтобы можно было выполнить следующий (цепной) вызов. Оптимизация не влияет на это. Так что да, _state объекта обновляется через каждый последовательный вызов.

+0

Спасибо: D Это полезно. – StackMonkey

Смежные вопросы