Examine the following C++ program, in which a IntList class is defined that cont
ID: 3764557 • Letter: E
Question
Examine the following C++ program, in which a IntList class is defined that contains an overloaded [] operator. What is the output of this program?
#include <iostream>
using namespace std;
class IntList
{
private:
int list[1];
public:
IntList() {list[0] = 0;}
int& operator[] (const int index) {return list[index];}
};
int main()
{
IntList list;
cout << list[0] << endl;
list[0] = 1;
cout << list[0] << endl;
return 0;
}
Notice that the overloaded [] operator returns a reference. Change the [] operator to return a value instead and explain what happens in that case. Explain why the ability to return by reference is essential to be able to implement such an operator. Can anything similar be done in Java?
Explanation / Answer
#include <iostream>
using namespace std;
class IntList
{
private:
int list[1];
public:
IntList()
{
list[0] = 0;
}
/*The return type of the overloead method is changed to return a value .
Since the operatior index is returns the value and it should be modifiable value,
reference of the list is returened .Now the operator [] value is not modifiable value.
It is possible to modify the value only if function knows the address value.
**/
int operator[] (const int index)
{
return list[index];
}
};
int main()
{
IntList list;
cout << list[0] << endl;
//Error
//list[0] is now not referenceing to value with address since
//the operator [] function does not return reference(address) value
list[0] = 1;
cout << list[0] << endl;
system("pause");
return 0;
}
------------------------------------------------------------------------------------------------
Java do not support pointers concept due to security concerns.
If reference (adddress) known then it is possible to modify the values of variables.
To avoid this problem, java supports class and object concept. Only objects of the class is
able to change the values of its members. java do not allow operator overloading concept.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.