Open In App

Output of C++ Program | Set 6

Improve
Improve
Like Article
Like
Save
Share
Report

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



Last Updated : 27 Dec, 2016
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads