intension to criticize the best programming language on earth.
-=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=-
[Sample.1] Say no to mutable...here is a way to assign a value to data
member from a const member function.
/* Featured */
class bike
{
public:
int bikenumber;
bike():bikenumber(0) {
}
void newnumber() const {
// bikenumber need to be mutable
bikenumber = 1143; // error C2166
}
};
int main(int argc, char* argv[]) {
bike mybike;
mybike.newnumber();
return 0;
}
/* Violated */
class bike
{
public:
int bikenumber;
bike():bikenumber(0) {
}
void newnumber() const {
int *pointertrick = (int *)&bikenumber;
*pointertrick = 1143;
}
};
int main(int argc, char* argv[]) {
bike mybike;
mybike.newnumber();
return 0;
}
-=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=-
Sample.2. Constants are modifiable...
/* Featured */
const int bikenumber = 3411;
bikenumber = 1143; // error C2166
/* Violated */
const int bikenumber = 3411;
int* newnumber = (int *)&bikenumber;
*newnumber = 1143;
-=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=--=-=-
Sample.3. Constant pointers are modifiable...
/* Featured */
int bikenumber1 = 1003;
int bikenumber2 = 1143;
int* const newnumber = &bikenumber1;
newnumber = &bikenumber2; // error C2166
/* Violated */
int bikenumber1 = 1003;
int bikenumber2 = 1143;
int* const newnumber = &bikenumber1;
int** indirect = (int **)&newnumber;
*indirect = (int *)&bikenumber2; // ref modified
rajesh`b <