Predict the output of below C++ programs.
Question 1
#include<iostream> using namespace std;
class Test {
int value;
public :
Test ( int v = 0) {value = v;}
int getValue() { return value; }
}; int main() {
const Test t;
cout << t.getValue();
return 0;
} |
Output: Compiler Error.
A const object cannot call a non-const function. The above code can be fixed by either making getValue() const or making t non-const. Following is modified program with getValue() as const, it works fine and prints 0.
#include<iostream> using namespace std;
class Test {
int value;
public :
Test ( int v = 0) { value = v; }
int getValue() const { return value; }
}; int main() {
const Test t;
cout << t.getValue();
return 0;
} |
Question 2
#include<iostream> using namespace std;
class Test {
int &t;
public :
Test ( int &x) { t = x; }
int getT() { return t; }
}; int main()
{ int x = 20;
Test t1(x);
cout << t1.getT() << " " ;
x = 30;
cout << t1.getT() << endl;
return 0;
} |
Output: Compiler Error
Since t is a reference in Test, it must be initialized using Initializer List. Following is the modified program. It works and prints “20 30”.
#include<iostream> using namespace std;
class Test {
int &t;
public :
Test ( int &x):t(x) { }
int getT() { return t; }
}; int main() {
int x = 20;
Test t1(x);
cout << t1.getT() << " " ;
x = 30;
cout << t1.getT() << endl;
return 0;
} |
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above