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


31 Write a program to enter the name and salary for a number of employees, store them all in a file, and finally search and display the salary...............
Date: Sep 22, 2018
32 Write a program, using a class to read the contents of the text file and convert all upper case letters to lower case and vice-versa and write the result in to another file.
Date: Sep 22, 2018
33 Write a program to enter the id and price of a number of products, store them all in a user defined file, and search the product when particular id is entered.
Date: Sep 22, 2018
34 Write a program using class template to sort two lists of numbers, one integer list and another floating point list.
Date: Sep 23, 2018
35 Write a program using function template to sort two lists of numbers, one integer list and another floating point list.
Date: Sep 23, 2018
36 Write a program using function template to find the sum of first and last element of an array.
Date: Sep 23, 2018
37 Write a template function to find the maximum number from the template array of size N.
Date: Sep 23, 2018
38 Write a function template to swap the numbers.
Date: Sep 23, 2018
39 Write a program using class template to swap two set of numbers.(one integer set and another floating point set)
Date: Sep 23, 2018
40 Exception handling in C++
Date: Aug 11, 2019
41 Explain the concept of encapsulation and information hiding In an object oriented paradigm with the help of an example.
Date: Sep 2, 2019
42 Write a program to find sum of first and last element of an array demonstrating use of new and delete operator.
Date: Sep 2, 2019
43 Write a program to compare two integer numbers and two single character using function overloading.
Date: Sep 2, 2019
44 Write an oop to create a class named “Time” with data objects and two member functions to add two member functions to add two times and display the resultant time.
Date: Sep 2, 2019
45 Write a program to define a class “string” using constructor initialize two string objects with given strings and write necessary functions to concatenate and display the strings.
Date: Sep 2, 2019

Tools/Apps





© Nepal Exchange Rates