constと関数

4911 ワード

constの使い方、特に関数の前と後ろの区別に使います!
const   ,         
 
      const     ,this             const  。    this     ,      this      。
  const     ,this         const       const  。      this      ,      this      。
 

   :Const,Const  ,Const  ,     Const

  const   ,C++           const  。           。      const    ,               。const                、   ,        。
const  constant   ,“    ”   。 const            ,         ,         。    C++        :“Useconst whenever you need”。
     1. const       

        ,          ,      “    ”  “    ”,    const  ,            。const        :
        “    ”,   const              ,      。
  StringCopy  :
void StringCopy(char*strDestination, const char *strSource);
  strSource     ,strDestination     。 strSource  const   ,             strSource   ,        。
        “   ”,                    ,            ,     const  。
       voidFunc1(int x)   voidFunc1(const int x)。       voidFunc2(A a)   voidFunc2(const A a)。  A           。
              , voidFunc(A a)               。         A             a,        、  、          。(              ,   )
      ,         voidFunc(A &a),  “    ”            ,         。    voidFunc(A &a)       :
“    ”       a,        。         , const    ,        voidFunc(const A &a)。
    ,    voidFunc(int x)    voidFunc(const int&x),      ?      ,                、     ,       ,“   ” “    ”       。
        ,    “const&”             。
              ,   “   ”     “const    ”,       。   voidFunc(A a)   voidFunc(const A &a)。
             ,   “   ”     “const    ”。             ,           。  voidFunc(int x)      voidFunc(const int &x)。
     2 const        

    “    ”         const  ,       (   )        ,          const        。    
constchar * GetString(void);
           :
char*str = GetString();
      
constchar *str =GetString();
         “     ”,                      , const        。(                  )
       intGetInt(void)   constint GetInt(void)。
       AGetA(void)   constA GetA(void),  A           。
             ,   AGetA(void)    constA &GetA(void)       。          ,                   “  ”     “  ”    ,       。
       “    ”      ,                 ,           。
  :
classA
{
A & operate = (const A &other); //     
};
Aa, b, c; // a, b, c  A   

a= b = c; //        
(a= b) = c; //         ,   
            const  ,               。   ,  a= b = c (a= b) = c 

3const     

                   const  。     const     ,         ,        const    ,        ,            。     , stack     GetCount     ,     GetCount   const  。      GetCount      。
classStack
{
public:
void Push(int elem);
int Pop(void);
intGetCount(void) const; // const     
private:
intm_num;
int m_data[100];
};
int Stack::GetCount(void)const
{
++ m_num; //     ,        m_num
Pop();//     ,     const  
returnm_num;
}
const              :const              ,                。
  Const       :

a.const      const    ,  const             ,  const    .
b.const           ,  const                  .
c.const              ,        const  .     ,            ,    .
e.    mutable        ,                 ,     const           
 
 
  :const         ?
--------------------------------------------------------------------------------
    
AcGePoint3dstartPoint() const;
const           
==>
    const   this      
  ,     
classA{
public:
f(int);
};
  f         ,    A*const this,      int     
      f        ,         f(constint),        f  this      ?  this     ,const       ,         ,  this    constA *constthis。(       this       ,          )
const  *this   ,   “               。       ”           ,      *this const