???????const??????
?????????????????????????????????????????????????????????????????????????????е???????????????????????????????????????????????????????????const????????????????????????????????????const?????á?
????????????????????????const?????(????)???????????????????????????????ò?????????????????ò??????????????????????
????1 const int ci = 1024;
????2 const int &r1 = ci;
????3 r1 = 42; // Error??r1????????????
????4 int & r2 = ci; //Error??????????????????????????????????
?????????????????????????????????????????????£???????????
????double dval = 3.14;
????int& ri = dval; // Error???????double???????????int&?????????(????????)
??????????????β??У?
???????ri?????????int?????????????ri????????????????????????dval??????????????????????????????????????ri????????????????????????????????????????
????double dval = 3.14;
????int temp = dval;
????int& ri = temp;
????????temp????????????????ri???????????????????ri??????????и??davl?????????????????????Ч???
??????????????????????double???????????int&?????????????????????и???????????????????????????????????????????п??????????????????????????κ?????
????double dval = 3.14;
????const int& ri = dval;
?????????????ri??????????????????????????ri???dval????????????dval?????int?????С?
?????塢const?????
?????????????????????ò??????????????????????????????????????????岢?????????????????????????????????????????????const?????????"????const"??
???????????????????????????????????const???????????????е?????????????á?
???????????????????????????????1???
????1????????????const?????????????????const????????
????2????????????const??????????????????const????????
????3??????????const?????????????????const????????
????4????????????const??????????????????const????????

 

1 int var;
2 const int ci = 42;
3
4 int *p1 =& var;
5 int *p2 = &ci; // Error??const int* ????????????int*
6 const int *p3 = &var; //ok
7 const int *p4 = &ci; // ok

 

??????????????const?????const????????????????????????????const????????????????????????????Σ??????????????????????????????????????????????????
????const int var = 42;
????const int* const p = &var;
????????????????const?????????????????????????????????????????????????????????????
????1 const int var = 42;
????2 int* p = (int*)&var;
????3 *p = 20;
????4 cout << var << endl;     //42
????5 cout << *p << endl;     //20
???????????????2?У?????????????????????????const???????????const????
?????????????????????????????????????????Ч????????
???????????????????????η???var????????????????????????????????var????????42???????滻??
????????const????
???????????????????????????????????const??????????????????????????????????????????2?????
????1????????????????(??mutalbe???)
????2????????????const???????

 


1 class AClass{
2     public:
3         int m_var;
4         mutable int m_mutable_var;
5         void setVar(int var){ m_var = var; }
6         void printVar(){ cout << m_var; }
7         void printVar_const()const { cout << m_var; }
8     };
9
10     const AClass ac;
11     ac.m_var = 20; // Error??ac?????const???????????????
12     ac.m_mutable_var = 42; // ok ???????mutable???ε????
13     ac.setVar(20); // Error: ac??????÷?const???????????????????????????????????????
14     ac.printVar();// Error??ac??????÷?const???????
15     ac.printVar_const(); // ok