Content Frame
Note for screen reader users: There is text between the form elements on this page. To be sure that you do not miss any text, use item by item navigation methods, rather than tabbing from form element to form element.
Skip Breadcrumb Navigation
Home  arrow Student Resources  arrow Quizzes  arrow Chapter 8

Chapter 8

Operator Overloading, Friends, and References

This activity contains 10 questions.

Question 1.

What is the output of the following program?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
};

Number::Number() {}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

int main()
{
	Number num1(5), num2;

	num2 = num1;
	num1.SetNumber(10);
	cout << num1.GetNumber() << " " 
	   << num2.GetNumber() << endl;
	return 0;
}
 
End of Question 1


Question 2.
Which of the following is not a valid reason to use const in the declaration below?

const Money operator +(const Money &amount1, const Money &amount2);

 
End of Question 2


Question 3.

What is the output of the following program?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
};

Number::Number()
{
}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

bool operator ==(Number& num1, Number& num2);

bool operator ==(Number& num1, Number& num2)
{
	int f;
	f = abs(num1.GetNumber() --
	   num2.GetNumber());
	return (f==1);
}

int main()
{
 Number num1(5), num2(6), num3(5);

 if (num1 == num2) {
 cout << "Num1 and Num2 are the same" << endl;
 }
 if (num1 == num3) {
  cout << "Num1 and Num3 are the same" << endl;
 }
 return 0;
}
 
End of Question 3


Question 4.
Which of the following prototypes is invalid?

 
End of Question 4


Question 5.

The following code is intended to print out "6" but instead it prints out "5". How could we correct the error?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
};

Number::Number()
{
}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

Number operator ++(Number &num)
{	
	return Number(num.GetNumber()+1);
}

int main()
{
	Number num1(5);
	++num1;
	cout << num1.GetNumber() << endl;
	return 0;
}
 
End of Question 5


Question 6.

What is the output of the following program?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
	Number operator ++();
	Number operator ++(int);
};

Number::Number()
{
}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

Number Number::operator ++()
{	
	m_num++;
	return Number(m_num);
}

Number Number::operator ++(int x)
{	
	m_num+=2;
	return Number(m_num);
}

int main()
{
	Number num1(5);
	++num1;
	cout << num1.GetNumber() << endl;	
	num1++;
	cout << num1.GetNumber() << endl;
	return 0;
}
 
End of Question 6


Question 7.

Given the following code, which will not output the number 15?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
	Number operator ^(Number num2);
};

Number::Number()
{
}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

Number Number::operator ^(Number num2)
{
	return Number(m_num * num2.m_num);
}
 
End of Question 7


Question 8.
What advantage is gained by declaring a friend function vs. using public accessor and mutator methods?

 
End of Question 8


Question 9.

Given the Number class below, how could we add the MoreNumbers class as a friend of the Number class? This will allow code in the MoreNumbers class access to private variables in the Numbers class.

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
};
 
End of Question 9


Question 10.

What is the output of the following code?

class Number
{
private:
	int m_num;
public:
	Number(int n);
	Number();
	int GetNumber();
	void SetNumber(int n);
	Number operator =(Number num2);
	Number operator *(Number num2);
};


Number::Number()
{
}

Number::Number(int n)
{
	m_num = n;
}

int Number::GetNumber()
{
	return m_num;
}

void Number::SetNumber(int n)
{
	m_num = n;
}

Number Number::operator *(Number num2)
{	
	return Number(m_num * num2.m_num);
}

Number Number::operator =(Number num2)
{
	m_num = num2.m_num * 2;
	return Number(m_num);
}

int main()
{
	Number num1(5), num2(3), num3;

	num3 = num1 * num2;
	cout << num3.GetNumber() << endl;
	return 0;
}
 
End of Question 10





Pearson Copyright © 1995 - 2010 Pearson Education . All rights reserved. Pearson Addison Wesley is an imprint of Pearson .
Legal Notice | Privacy Policy | Permissions

Return to the Top of this Page