C++????Щ?£?const?÷??????
???????????? ???????[ 2014/5/5 11:25:07 ] ????????C++ const
????????????????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
???????const???????
????1??const???????
????const ???????????????е?????????????????????????????????????????????
????1??const ???????????????????????????????б??????????????????????????????
????2????? const ???????????????????????岢????????????????????
1 class constTestClass
2 {
3 public:
4 const int var;
5 static const int sci;
6 public:
7 constTestClass() :var(42){} // const???????????????????????????б??г????
8 };
9 const int constTestClass::sci = 42; // static const?????????????????????ж????????
?????????????????????????????????2??裺???????????????????????????????????????????????????????????????????????????????б???г??????????й??????е???????? const ???????????????壨???????????????г????????????????????????????б??г??????const????????????????????????????????????????????????
?????????????????????????????????????????е?????????????????????????????????????????з??????????????????????????????κ????????????????????и????????????????????????????????????????????????????????????????????????????????????????????????壬????????κζ???????????????????? const ??????? ??????????????????????????????????????????
????2??const???????
????const???????????????????????????κγ????????
????1??????const?????????this???????? const ???? ?? const ???
????2??const??????????????????κγ???????????????????? mutable ???η????Ρ?
1 class constTestClass
2 {
3 public:
4 int var;
5 const int ci;
6 mutable int mci;
7 public:
8 void setVar(int i);
9 void setMci(int i)const;
10 };
11 void constTestClass::setVar(int i)
12 {
13 var = i; // ok
14 mci = i; // ok
15 ci = i; // Error??ci?????const?????????
16 }
17 void constTestClass::setMci(int i)const
18 {
19 var = i; // ok
20 mci = i; // ok mutable????????????const??????????
21 ci = i; // Error
22 }
?????????????????????У???????? this ???????????????????????????????????????????????CPU????????????this???????????????????????????????????????????????????????????????в??????????this?????? const??????????????????????????????????????????????????????????????
?????????const?????????this?????????const????????????const???????????????this???????????const?????const???
????mutable ???η????const??????????????Щ??????????????????????????????????????????????κ??????????
??????? const ????????????const???????????????????????????????????? const ???Σ????????????????????????const?????const?????????仰??????????????this????????const?????const????????????????this?????????????const?????????????????????????????е??á??? const ???????????this??????? ???const?????const????????????????á?
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11