Predict the output of following C++ program.
#include<iostream>
using namespace std;
int &fun()
{
static int x = 10;
return x;
}
int main()
{
fun() = 30;
cout << fun();
return 0;
}
|
(A) Compiler Error: Function cannot be used as lvalue
(B) 10
(C) 30
Answer: (C)
Explanation: When a function returns by reference, it can be used as lvalue. Since x is a static variable, it is shared among function calls and the initialization line “static int x = 10;” is executed only once.
The function call fun() = 30, modifies x to 30. The next call “cout << fun()" returns the modified value.
Quiz of this Question