Const int & method (int & parameter)

  • Thread starter rootX
  • Start date
  • #1
378
2
dec is a method that gets the parameter by reference, changes its value and returns a reference const int.

Problem [in bold]: In the book it says, "const means that that the object being returned cannot itself by modified later on." But, I changed the return value without any error.

Code:
#include <iostream>
using namespace std;

const int & dec (int & a)
{
    a = 5;
    return a;
}

int main()
{
    int a = 0;
    cout<<"a = "<<a<<endl;
    cout<<"Passing to the method ... "<<endl;
   [B] int b = dec(a);
    b = 6; //***I am chaning the returned type value****[/B]
    cout<<"a = "<<a<<" b = "<<b<<endl; 
    cout <<"Chaning a value ... "<<endl;
    a = 6;
    cout<<"a = "<<a<<endl;
    cout<<"Passing to the method ... "<<endl;
    b = dec(a);
    cout<<"a = "<<a<<" b = "<<b<<endl;
}
 

Answers and Replies

  • #2
Hurkyl
Staff Emeritus
Science Advisor
Gold Member
14,916
19
But, I changed the return value without any error.
No you didn't: you changed b. b is not the return value of your function; it is merely an int value which was initialized to be a copy of the return value of your function.
 
Last edited:
  • #3
378
2
No you didn't: you changed b. b is not the return value of your function; it is merely an int value which was initialized to be a copy of the return value of your function.
oook thnx!
So, I was using operator = which makes a deep copy.

This throws error now that I cannot change const value ...
dec(a) = 5;

And that's why book was recommending to use

const int & b = dec(a);
rather than
int b =dec(a);

so that I avoid cost of copying.
:smile:
 
  • #4
rcgldr
Homework Helper
8,710
539
old versions of fortran were always fun with stuff like this:

call example(1.0)
b = 1.0
c = b+1.0
end

....

subroutine example(a)
a = 2.0
end

Yep no checking for changing of constants.
 
  • #5
17
0
oook thnx!


const int & b = dec(a);
rather than
int b =dec(a);

so that I avoid cost of copying.
:smile:
What is the cost of copying ?
 
  • #6
378
2
What is the cost of copying ?
I was talking about complex objects where you perform several operations to make the object copy like deleting all the pointers .. and then providing them new locations:

I need to override something like this function..
const & Object operator:= (const Object &rhs)
{

}
 

Related Threads on Const int & method (int & parameter)

  • Last Post
Replies
8
Views
793
  • Last Post
Replies
1
Views
2K
Replies
3
Views
2K
Replies
4
Views
2K
  • Last Post
Replies
5
Views
4K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
2
Views
39K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
8
Views
2K
  • Last Post
Replies
8
Views
2K
Top