????auto
????C++11?????auto???????????????????????????????????????????????????????????д????????Ч???
????auto x = 5;   //OK
????auto pi = new auto(1);  //OK
????const auto *v = &x?? u = 6;  //OK
????auto int r;   //error??auto???????洢?????????????????????????
????auto str;     //error??????????str????
????Note:v??u???????????????С???
????1????????????const auto *v = &x ???????auto?????????????int??????u????????д?????“=6”??????????????
????2??U???????????????????????????????ep:u = 6??? u = 6.0?? ???????????
????auto?????????????????????????????????????????“?λ??”??
???????auto?????????????????????????????????????????????????????????auto?λ???滻????????????
??????C++11????auto ???“????????洢?????????”?????????????????????ò???auto int i = 1; ???????????????????????дauto????????Ч????????static int j = 1;????????????
????auto??????????????y???????????????????const??volatile???????
????int x = 1;
????const auto e =x;     //const int
????auto f = e;         //int
????const auto& g = x;   //const int&
????auto& h= g;    //const int&
???????????????????????
????1??????????????????????auto?????????????????????????ú?CV???????????????
????2??????????????????????auto????????????????????????cv?????
????decltype
????decltype??????????????????????????????????????????
????decltype??exp??
????int x = 0;
????decltype(x) y = 1;   // y->int
????const int& i = x;    //i->const int &
????decltype(i) j = y;    //j->const int &
????const decltype(y) * p =&z;  // p->const int *
????decltype(x) * pi = &x;   //*pi->int
????decltype(pi)* pii = &pi   //*pii->int *
?????????????????????decltype?????????
????1??exp??????????????????decltype??exp????exp???????
????2??exp??????????decltype??exp?????????????????
????3????exp????????????decltype??exp????exp??????????????????exp????????
????decltype??????
????int i = 42;
????int *p = &i:
????decltype(*p) c;//error??c??int &????????
??????????????????????????????decltype????????????????????????????????????????????????????
????decltype??auto????????????????decltype???????????????????????decltype???????????????????????????????????????????????????????????????????decltype??????????????????????????????????????????????????????????????????????????????????????????????????
????decltype??i?? = e;  //OK
????decltype((i)) = e;  //error:e????????????????
????explicite
????explicit??????????:
????*explicit ???????????????????????????????
????*explicit ???????????????????????????
??????C++?У?explicit????????????????????????????ε???????????????????????????????????????????????????????????
????explicit??????????????????????????????????????????????????????????????????
?????????????????????????????explicit ???ε????????????????
???????????????????explicit????????????????????????????????
????explicit ???????????????????????????
??????????????????????????????????????????????βι?????????explicit??
????inline
????1) inline???????????????????ó??????????????????
????2) inline??????????????????????????????????????????????????????????????У???????ú????????????????????????
????3)inline???ε???????????????
????constexptr
???????constexptr??????????????????????????????constexptr??????????????????????????????????????????????????????βε??????????????????????????????б?????????????return???
????constexptr int new_sa() {return 42;}
????constexptr int foo = new_sa();//OK
?????????new_sz????????????constexpr?????????????????????????????new_sz????????????????????????п?????new_sz?????????constexpr????????foo??
??????иó????????????????????constexpr??????????滻????????????????????????????????constexpr?????????????????????????
????constexpr???????????????????????????Щ????????????????κβ????С????磬constexpr?????п????п??????????????using??????
????????????constexpr???????????????????????
????//???arg?????????????scale(arg)??????????
????constexpr size_t scale(size_t cnt) {return new_sz()*cnt;}
??????scale?????????????????????????????????????????????
????int arr[scale(2)]; //?????scale(2)?????????
????int i=2; //i???????????
????int a2[scale(i)]; //????scale(i)???????????
??????????????????????scale????????????????????2?????????????????????????????????????????????????????????滻??scale????????á?
?????????????????????????????scale??????????int????????i???????????????????????????scale????????????????????????????????????????????麯???????????????????????ò?????????????????????????????????
????constexpr????????????????????
????????е????????????????????ɡ?
????????????????constexpr??????????????
???????????????????????????????constexpr??????????????ж?ζ??塣????????????????????????к????????????????????????????塣???????????????????????????????constexpr????????????????????????????????????????????????constexpr??????????????????С?
????friend
????1) ???friend??????????????private??protected?????
????2) friend????????У???????????????????????????????????????????????????????л????????????????????????????????????????????
????3) ???????friend????????????????????б??????????????????????protected???е??????????????????????friend??????friend??????????????
????4) friend???????????????????????????????????
????#include
????#include
????class Point
????{
????public:
????Point(double xx?? double yy) { x=xx; y=yy; }
????void Getxy();
????friend double Distance(Point &a?? Point &b);
????private:
????double x?? y;
????};
????double Distance(Point &a?? Point &b)
????{
????double dx = a.x - b.x;
????double dy = a.y - b.y;
????return sqrt(dx*dx+dy*dy);
????}
????static
??????C++?д????????????
????1) static????????????????????????????
????2) static???????????????/??з??????
????3) ????public static??????????????????????????????private static????????????????private????????????з????
????(4) static??????????????static??????????????????????static?????????????static?????????????static????????????????????????????????????????????????????
????5) ??static???????????????static????????????static?????
????6) ?????????????????public static????????????????????????????????á???????????public static?????????private??
????7) static??????????this??????this?????????
????8) static????????????????const???麯?????????????????????????????static???????????”???????????????????”???????????????麯????????static?????????????const??