Pass by reference with reference variable, constant reference argument

Aug 28, 2018

When normal function call takes place, then the value of the actual arguments are copied to the formal arguments of the function. So, any changes to the formal arguments, within the function body does not affect the actual arguments.

let's take an example.

//defination of the function increment

void increment(int var){

  var++;

//function call

int x = 10;

increment(x);

In above example, when increment function is called with parameter x passed, then the value of x is copied to the variable var. So, the increment in the var variable only takes place for the local variable of the var variable of the increment() function,  and the increment does not seem in x. But there may arise some situation where we need the effect on actual arguments. Lets consider the following question.

Q. Write a C++ program to swap the value of the two variable in main program using function.

 

#include
using namespace std;

// declaration and defination of the function to swap
void swap(int &xv, int &yv){
	// swapping using third variable
	int temp = xv;
	xv = yv;
	yv = temp;
}

int main(){
	int x = 10, y = 20;
	cout<<"Before swap:"<<"x = "<<x<<" and y = "<<y<<endl;
	swap(x,y); //swap function call
	cout<<"After swap:"<<"x = "<<x<<" and y = "<<y<<endl;
	return 0;
}

 

sample run:

Before swap:x = 10 and y = 20
After swap:x = 20 and y = 10

 

Constant Reference arguments:

Let's see the scenario of above, the function with pass by reference, changes the variable in the actual arguments. That means any changes on the varibles in the function reflects on the actual arguments. What if we do not want to change the actual parameter values. Or, if mistakenly the actual parameter changes then, there will be blunder on the program. You may answer easily why not to use pass by value ??

And the answer is No, i mean not that good to use pass by value. and i will explain why? During the function call, if the object or array is to be passed in large size, then it will cause the large sized variables to be created, and obviously the more memory is required during the function call. But in case of reference arguments just the reference is passed, no variables are created.

To prevent the alteration of the actual arguments by the function, the constant reference arguments comes to play role. And if we try to change the constant reference arguments then error will occur, and ensures the prevention of the modification of the actual arguments.

Syntax:

return_type function_name( const data_type &ref_variable){

  //body or statements of the function

}

Related


16 Default arguments in C++
Date: Sep 2, 2018
17 Friend Function, Friend class
Date: Sep 4, 2018
18 What are friend functions ? Is it possible for a function to be friend of two classes ? If yes then how is it implemented in C++. Explain with suitable example. ---PU-2016 (New Course)
Date: Sep 10, 2018
19 Write an OOP to add two complex numbers using passing objects as arguments. ---PU_2015
Date: Sep 10, 2018
20 Write a Program to add two complex numbers using friend function. ----PU_2015
Date: Sep 10, 2018
21 What are constructors and destructors ? Write a Object Oriented Program to display Fibonacci series (Use constructor for initialization) ----PU-2014
Date: Sep 15, 2018
22 Write a OOP to create a class named "Time" with data members 'hour' and 'minute' a constructor to initialize............. ---PU-2011
Date: Sep 15, 2018
23 What is "this" pointer ? Illustrate with example.
Date: Sep 15, 2018
24 Write a program to create class “Counter” having integer data member, overload the post increment, post decrement, pre increment and pre decrement for the class “Counter”.
Date: Sep 15, 2018
25 Write a Program to overload the unary minus operator using friend function.
Date: Sep 15, 2018
26 Write a OOP to overload "==" operator to determine the equality of two fractional numbers (fractional numbers must be in terms of numerator and denominator)
Date: Sep 15, 2018
27 Write a program to create classes “Dollar” and “Rupee”. Write conversion routine to convert dollar to rupee (1 dollar = 108 rupees).
Date: Sep 15, 2018
28 Write a Program to convert angle in degree to angle in radian. where, angle in radian = angle in degree * PI/180. Use Conversion routine in source class.
Date: Sep 15, 2018
29 Write a program which asks file name from keyboard, opens a file with that name for output, reads the line from keyboard character by character and writes the line onto the file.
Date: Sep 22, 2018
30 WAP to to read the text from the file named "hello.txt" to the file name called "test.txt".
Date: Sep 22, 2018

Tools/Apps





© Nepal Exchange Rates