In good old days, C programmers would use preprocessor directive to define constants.
e.g.
#define s 10
But we know now that, as compiler never gets to see these, preprocessor statements are error prone.
Hence we have const s. A constant - defined with keyword const promises that this entity is never going to change. And if we accidentally modify a const, compiler throws an error.
Let us look at an example.
When we compile this program, compiler tells us that
default.cpp: In function ‘int main()’:
default.cpp:8:7: error: assignment of read-only variable ‘b’
b = 18;
So it is catching the error that we are trying to modify a const.
Whenever a local variable or parameter need not be modified, declare it as a const.
Yes, we can make even parameters as constant. We can make objects constant or even member functions constant.
But what if the parameter is a reference parameter? If a function has a const reference parameter, then this parameter can not be modified by the function. Such constant reference parameters are useful and should be used when we want to send large objects to functions without copying them.
Let us look at an example program which has a function with constant reference parameter.
When we compile this program we get an error because we are trying to modify constant parameters a and b in second swap function.
constref.cpp: In function ‘int swap(const int&, const int&)’:
constref.cpp:12:6: error: assignment of read-only reference ‘a’
a = b;
^
constref.cpp:13:6: error: assignment of read-only reference ‘b’
b = temp;
So the compiler detects this error and warns us.
We can even have constant data members in classes and constant member functions. We will see them when we discuss about classes.
You can get these notes and also programs, quiz on C++ by downloading the app Simplified C++ by Hegdeapps
e.g.
#define s 10
But we know now that, as compiler never gets to see these, preprocessor statements are error prone.
Hence we have const s. A constant - defined with keyword const promises that this entity is never going to change. And if we accidentally modify a const, compiler throws an error.
Let us look at an example.
#include<iostream> using namespace std; int main() { int a = 10; const int b=12; a++; b = 18; }
When we compile this program, compiler tells us that
default.cpp: In function ‘int main()’:
default.cpp:8:7: error: assignment of read-only variable ‘b’
b = 18;
So it is catching the error that we are trying to modify a const.
Whenever a local variable or parameter need not be modified, declare it as a const.
Yes, we can make even parameters as constant. We can make objects constant or even member functions constant.
constant parameters to functions
A function need not have constant parameters. Because, any way the parameters are not modified in the caller. Right?But what if the parameter is a reference parameter? If a function has a const reference parameter, then this parameter can not be modified by the function. Such constant reference parameters are useful and should be used when we want to send large objects to functions without copying them.
Let us look at an example program which has a function with constant reference parameter.
#include<iostream> using namespace std; int swap(int &a,int &b) { int temp = a; a = b; b = temp; } int swap(const int &a,const int &b) { int temp = a; a = b; b = temp; } int main() { int m=10,n=12; swap(m,n); cout<<"Now m and n are "<<m<<" "<<n<<endl; swap(m,n); cout<<"Now m and n are "<<m<<" "<<n<<endl; }
constref.cpp: In function ‘int swap(const int&, const int&)’:
constref.cpp:12:6: error: assignment of read-only reference ‘a’
a = b;
^
constref.cpp:13:6: error: assignment of read-only reference ‘b’
b = temp;
So the compiler detects this error and warns us.
We can even have constant data members in classes and constant member functions. We will see them when we discuss about classes.
You can get these notes and also programs, quiz on C++ by downloading the app Simplified C++ by Hegdeapps
Comments
Post a Comment