#include <iostream>
using namespace std;
int pureFunction(int number){
return number + 1;
}
int& notPureFunction(int& number){
number = number + 1;
return number;
}
int main() {
int number = 1;
cout << "number: " <<number << endl;
cout << "---------------------------" << endl;
cout << "pureFunction gives back: "<< pureFunction(number) << endl;
cout << "number after pureFunction: " << number << endl;
if( pureFunction(number) == pureFunction(number) ) {
cout << "Two identical function call gives the same result. f(x) == f(x)" << endl;
cout << "number after function equality test: " << number << endl;
}
cout << "---------------------------" << endl;
cout << "notPureFunction gives back: "<< notPureFunction(number) << endl;
cout << "number after notPureFunction: " << number << endl;
if( notPureFunction(number) != notPureFunction(number) ) {
cout << "Two identical function call does not give back the same result. f(x) != f(x)" << endl;
cout << "number after function equality test: " << number << endl;
}
cout << "---------------------------" << endl;
return 0;
}