TIP: Be Careful with Dummy Reference Arguments | CodeGuru

TIP: Be Careful with Dummy Reference Arguments

How many times have you used functions that return results through reference parameters, such as this: void func(int & ra1, int & ra2, int & ra3) ; You would probably call this function this way: func(a1, a2, a3) ; Sometimes, if you do not want the outputs of ra1 and ra2 arguments, but only interested […]

Written By
CodeGuru Staff
CodeGuru Staff
Feb 24, 2009
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

How many times have you used functions that return results through reference parameters, such as this:

void func(int & ra1, int & ra2, int & ra3) ;

You would probably call this function this way:

func(a1, a2, a3) ;

Sometimes, if you do not want the outputs of ra1 and ra2 arguments, but only interested in ra3, you might be tempted to make a call to the function as follows:

int dummy, res ;
func(dummy, dummy, res) ;

This way, you might end up saving the space that is required for that one extra int argument by using dummy in place of arguments a1 and a2. The function may even work properly. But, what’s important to note is that if the output argument ra3 is dependent on the values already computed in ra1 and ra2 by func, you might be looking at an entirely different scenario. Take the following example implementation of func:

# include <iostream.h>
void
func(int & ra1, int & ra2, int & ra3)
{
   ra1 = 1 ;
   ra2 = 2 ;
   ra3 = ra1 + ra2 ;
}
void
main()
{
   int dummy, res ;
   func(dummy, dummy, res) ;
   cout << res ;
}

No points for guessing the output. It’s not 3 (as expected), but 4. This is obviously due to ra1 and ra2 being allotted the same address, that of dummy. Disaster!! You would have successfully traded accuracy/correctness for a simple saving of 4 bytes in virtual space.

Therefore, in cases where you are not sure whether the values of one result parameter affects others, safely use different variables to hold output parameters, as in:

int  dummy1, dummy2, res ;
func(dummy1, dummy2, res) ;
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.