Difficulty Level: Rookie
Predict the output of below C++ programs.
Question 1
#include<iostream>using namespace std;int x = 10;void fun(){ int x = 2; { int x = 1; cout << ::x << endl; }}int main(){ fun(); return 0;} |
Output: 10
If Scope Resolution Operator is placed before a variable name then the global variable is referenced. So if we remove the following line from the above program then it will fail in compilation.
If Scope Resolution Operator is placed before a variable name then the global variable is referenced. So if we remove the following line from the above program then it will fail in compilation.
int x = 10;
Question 2
#include<iostream>using namespace std;class Point {private: int x; int y;public: Point(int i, int j); // Constructor};Point::Point(int i = 0, int j = 0) { x = i; y = j; cout << "Constructor called";}int main(){ Point t1, *t2; return 0;} |
Output: Constructor called.
If we take a closer look at the statement “Point t1, *t2;:” then we can see that only one object is constructed here. t2 is just a pointer variable, not an object.
If we take a closer look at the statement “Point t1, *t2;:” then we can see that only one object is constructed here. t2 is just a pointer variable, not an object.
Question 3
#include<iostream>using namespace std;class Point {private: int x; int y;public: Point(int i = 0, int j = 0); // Normal Constructor Point(const Point &t); // Copy Constructor};Point::Point(int i, int j) { x = i; y = j; cout << "Normal Constructor called\n";}Point::Point(const Point &t) { y = t.y; cout << "Copy Constructor called\n";}int main(){ Point *t1, *t2; t1 = new Point(10, 15); t2 = new Point(*t1); Point t3 = *t1; Point t4; t4 = t3; return 0;} |
Output:
Normal Constructor called
Copy Constructor called
Copy Constructor called
Normal Constructor called
Normal Constructor called
Copy Constructor called
Copy Constructor called
Normal Constructor called
See following comments for explanation:
Point *t1, *t2; // No constructor callt1 = new Point(10, 15); // Normal constructor callt2 = new Point(*t1); // Copy constructor call Point t3 = *t1; // Copy Constructor callPoint t4; // Normal Constructor callt4 = t3; // Assignment operator call |
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above
No comments:
Post a Comment