C++中const限定符的几种常见用法 const限定符

C++\u4e2dconst\u7684\u7528\u6cd5\u8be6\u89e3

C\u4e2d\u7684CONST
\u3000\u3000C\u4e2dCONST\u7684\u4f7f\u7528\uff1a
\u3000\u3000const\u662f\u4e00\u4e2aC\u8bed\u8a00\u7684\u5173\u952e\u5b57\uff0c\u5b83\u9650\u5b9a\u4e00\u4e2a\u53d8\u91cf\u4e0d\u5141\u8bb8\u88ab\u6539\u53d8\u3002\u4f7f\u7528const\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u53ef\u4ee5\u63d0\u9ad8\u7a0b\u5e8f\u7684\u5b89\u5168\u6027\u548c\u53ef\u9760\u6027\uff0c\u53e6\u5916\uff0c\u5728\u89c2\u770b\u522b\u4eba\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u6e05\u6670\u7406\u89e3const\u6240\u8d77\u7684\u4f5c\u7528\uff0c\u5bf9\u7406\u89e3\u5bf9\u65b9\u7684\u7a0b\u5e8f\u4e5f\u6709\u4e00\u4e9b\u5e2e\u52a9\u3002
\u3000\u3000\u867d\u7136\u8fd9\u542c\u8d77\u6765\u5f88\u7b80\u5355\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0cconst\u7684\u4f7f\u7528\u4e5f\u662fc\u8bed\u8a00\u4e2d\u4e00\u4e2a\u6bd4\u8f83\u5fae\u5999\u7684\u5730\u65b9\uff0c\u5fae\u5999\u5728\u4f55\u5904\u5462\uff1f\u8bf7\u770b\u4e0b\u9762\u51e0\u4e2a\u95ee\u9898\u3002
\u3000\u3000\u95ee\u9898\uff1aconst\u53d8\u91cf & \u5e38\u91cf
\u3000\u3000\u4e3a\u4ec0\u4e48\u4e0b\u9762\u7684\u4f8b\u5b50\u5728\u4f7f\u7528\u4e00\u4e2aconst\u53d8\u91cf\u6765\u521d\u59cb\u5316\u6570\u7ec4\uff0cANSI C\u7684\u7f16\u8bd1\u5668\u4f1a\u62a5\u544a\u4e00\u4e2a\u9519\u8bef\u5462\uff1f\u3000
\u3000\u3000const int n = 5;
\u3000\u3000int a[n];
\u3000\u3000\u7b54\u6848\u4e0e\u5206\u6790:
\u3000\u30001\uff09\u3001\u8fd9\u4e2a\u95ee\u9898\u8ba8\u8bba\u7684\u662f\u201c\u5e38\u91cf\u201d\u4e0e\u201c\u53ea\u8bfb\u53d8\u91cf\u201d\u7684\u533a\u522b\u3002\u5e38\u91cf\u80af\u5b9a\u662f\u53ea\u8bfb\u7684\uff0c\u4f8b\u59825\uff0c \u201cabc\u201d\uff0c\u7b49\uff0c\u80af\u5b9a\u662f\u53ea\u8bfb\u7684\uff0c\u56e0\u4e3a\u56e0\u4e3a\u5e38\u91cf\u662f\u88ab\u7f16\u8bd1\u5668\u653e\u5728\u5185\u5b58\u4e2d\u7684\u53ea\u8bfb\u533a\u57df\uff0c\u5f53\u7136\u4e5f\u5c31\u4e0d\u80fd\u591f\u53bb\u4fee\u6539\u5b83\u3002\u800c\u201c\u53ea\u8bfb\u53d8\u91cf\u201d\u5219\u662f\u5728\u5185\u5b58\u4e2d\u5f00\u8f9f\u4e00\u4e2a\u5730\u65b9\u6765\u5b58\u653e\u5b83\u7684\u503c\uff0c\u53ea\u4e0d\u8fc7\u8fd9\u4e2a\u503c\u7531\u7f16\u8bd1\u5668\u9650\u5b9a\u4e0d\u5141\u8bb8\u88ab\u4fee\u6539\u3002C\u8bed\u8a00\u5173\u952e\u5b57const\u5c31\u662f\u7528\u6765\u9650\u5b9a\u4e00\u4e2a\u53d8\u91cf\u4e0d\u5141\u8bb8\u88ab\u6539\u53d8\u7684\u4fee\u9970\u7b26\uff08Qualifier\uff09\u3002\u4e0a\u8ff0\u4ee3\u7801\u4e2d\u53d8\u91cfn\u88ab\u4fee\u9970\u4e3a\u53ea\u8bfb\u53d8\u91cf\uff0c\u53ef\u60dc\u518d\u600e\u4e48\u4fee\u9970\u4e5f\u4e0d\u662f\u5e38\u91cf\u3002\u800cANSI C\u89c4\u5b9a\u6570\u7ec4\u5b9a\u4e49\u65f6\u7ef4\u5ea6\u5fc5\u987b\u662f\u201c\u5e38\u91cf\u201d\uff0c\u201c\u53ea\u8bfb\u53d8\u91cf\u201d\u4e5f\u662f\u4e0d\u53ef\u4ee5\u7684\u3002
\u3000\u30002)\u3001\u6ce8\u610f\uff1a\u5728ANSI C\u4e2d\uff0c\u8fd9\u79cd\u5199\u6cd5\u662f\u9519\u8bef\u7684\uff0c\u56e0\u4e3a\u6570\u7ec4\u7684\u5927\u5c0f\u5e94\u8be5\u662f\u4e2a\u5e38\u91cf\uff0c\u800cconst int n,n\u53ea\u662f\u4e00\u4e2a\u53d8\u91cf\uff08\u5e38\u91cf != \u4e0d\u53ef\u53d8\u7684\u53d8\u91cf\uff0c\u4f46\u5728\u6807\u51c6C++\u4e2d\uff0c\u8fd9\u6837\u5b9a\u4e49\u7684\u662f\u4e00\u4e2a\u5e38\u91cf\uff0c\u8fd9\u79cd\u5199\u6cd5\u662f\u5bf9\u7684\uff09\uff0c\u5b9e\u9645\u4e0a\uff0c\u6839\u636e\u7f16\u8bd1\u8fc7\u7a0b\u53ca\u5185\u5b58\u5206\u914d\u6765\u770b\uff0c\u8fd9\u79cd\u7528\u6cd5\u672c\u6765\u5c31\u5e94\u8be5\u662f\u5408\u7406\u7684\uff0c\u53ea\u662f ANSI C\u5bf9\u6570\u7ec4\u7684\u89c4\u5b9a\u9650\u5236\u4e86\u5b83\u3002
\u3000\u30003)\u3001\u90a3\u4e48\uff0c\u5728ANSI C \u8bed\u8a00\u4e2d\u7528\u4ec0\u4e48\u6765\u5b9a\u4e49\u5e38\u91cf\u5462\uff1f\u7b54\u6848\u662fenum\u7c7b\u578b\u548c#define\u5b8f\uff0c\u8fd9\u4e24\u4e2a\u90fd\u53ef\u4ee5\u7528\u6765\u5b9a\u4e49\u5e38\u91cf\u3002
\u3000\u3000\u95ee\u9898\uff1aconst\u53d8\u91cf & const \u9650\u5b9a\u7684\u5185\u5bb9
\u3000\u3000\u4e0b\u9762\u7684\u4ee3\u7801\u7f16\u8bd1\u5668\u4f1a\u62a5\u4e00\u4e2a\u9519\u8bef\uff0c\u8bf7\u95ee\uff0c\u54ea\u4e00\u4e2a\u8bed\u53e5\u662f\u9519\u8bef\u7684\u5462\uff1f\u3000
\u3000\u3000typedef char * pStr;
\u3000\u3000char string[4] = "abc";
\u3000\u3000const char *p1 = string;
\u3000\u3000const pStr p2 = string;
\u3000\u3000p1++;
\u3000\u3000p2++;
\u3000\u3000\u7b54\u6848\u4e0e\u5206\u6790\uff1a
\u3000\u3000\u95ee\u9898\u51fa\u5728p2++\u4e0a\u3002
\u3000\u30001)\u3001const\u4f7f\u7528\u7684\u57fa\u672c\u5f62\u5f0f\uff1a const char m;
\u3000\u3000\u9650\u5b9am\u4e0d\u53ef\u53d8\u3002
\u3000\u30002)\u3001\u66ff\u63621\u5f0f\u4e2d\u7684m, const char *pm;
\u3000\u3000\u9650\u5b9a*pm\u4e0d\u53ef\u53d8\uff0c\u5f53\u7136pm\u662f\u53ef\u53d8\u7684\uff0c\u56e0\u6b64\u95ee\u9898\u4e2dp1++\u662f\u5bf9\u7684\u3002
\u3000\u30003)\u3001\u66ff\u63621\u5f0fchar, const newType m;
\u3000\u3000\u9650\u5b9am\u4e0d\u53ef\u53d8\uff0c\u95ee\u9898\u4e2d\u7684charptr\u5c31\u662f\u4e00\u79cd\u65b0\u7c7b\u578b\uff0c\u56e0\u6b64\u95ee\u9898\u4e2dp2\u4e0d\u53ef\u53d8\uff0cp2++\u662f\u9519\u8bef\u7684\u3002
\u3000\u3000\u95ee\u9898\uff1aconst\u53d8\u91cf & \u5b57\u7b26\u4e32\u5e38\u91cf
\u3000\u3000\u8bf7\u95ee\u4e0b\u9762\u7684\u4ee3\u7801\u6709\u4ec0\u4e48\u95ee\u9898\uff1f
\u3000\u3000char *p = "i'm hungry!";
\u3000\u3000p[0]= 'I';
\u3000\u3000\u7b54\u6848\u4e0e\u5206\u6790\uff1a
\u3000\u3000\u4e0a\u9762\u7684\u4ee3\u7801\u53ef\u80fd\u4f1a\u9020\u6210\u5185\u5b58\u7684\u975e\u6cd5\u5199\u64cd\u4f5c\u3002\u5206\u6790\u5982\u4e0b\uff0c \u201ci'm hungry\u201d\u5b9e\u8d28\u4e0a\u662f\u5b57\u7b26\u4e32\u5e38\u91cf\uff0c\u800c\u5e38\u91cf\u5f80\u5f80\u88ab\u7f16\u8bd1\u5668\u653e\u5728\u53ea\u8bfb\u7684\u5185\u5b58\u533a\uff0c\u4e0d\u53ef\u5199\u3002p\u521d\u59cb\u6307\u5411\u8fd9\u4e2a\u53ea\u8bfb\u7684\u5185\u5b58\u533a\uff0c\u800cp[0] = 'I'\u5219\u4f01\u56fe\u53bb\u5199\u8fd9\u4e2a\u5730\u65b9\uff0c\u7f16\u8bd1\u5668\u5f53\u7136\u4e0d\u4f1a\u7b54\u5e94\u3002
\u3000\u3000\u95ee\u9898\uff1aconst\u53d8\u91cf & \u5b57\u7b26\u4e32\u5e38\u91cf2
\u3000\u3000\u8bf7\u95eechar a[3] = "abc" \u5408\u6cd5\u5417\uff1f\u4f7f\u7528\u5b83\u6709\u4ec0\u4e48\u9690\u60a3\uff1f
\u3000\u3000\u7b54\u6848\u4e0e\u5206\u6790\uff1a
\u3000\u3000\u5728\u6807\u51c6C\u4e2d\u8fd9\u662f\u5408\u6cd5\u7684\uff0c\u4f46\u662f\u5b83\u7684\u751f\u5b58\u73af\u5883\u975e\u5e38\u72ed\u5c0f\uff1b\u5b83\u5b9a\u4e49\u4e00\u4e2a\u5927\u5c0f\u4e3a3\u7684\u6570\u7ec4\uff0c\u521d\u59cb\u5316\u4e3a\u201cabc\u201d\uff0c\uff0c\u6ce8\u610f\uff0c\u5b83\u6ca1\u6709\u901a\u5e38\u7684\u5b57\u7b26\u4e32\u7ec8\u6b62\u7b26'\0'\uff0c\u56e0\u6b64\u8fd9\u4e2a\u6570\u7ec4\u53ea\u662f\u770b\u8d77\u6765\u50cfC\u8bed\u8a00\u4e2d\u7684\u5b57\u7b26\u4e32\uff0c\u5b9e\u8d28\u4e0a\u5374\u4e0d\u662f\uff0c\u56e0\u6b64\u6240\u6709\u5bf9\u5b57\u7b26\u4e32\u8fdb\u884c\u5904\u7406\u7684\u51fd\u6570\uff0c\u6bd4\u5982strcpy\u3001printf\u7b49\uff0c\u90fd\u4e0d\u80fd\u591f\u88ab\u4f7f\u7528\u5728\u8fd9\u4e2a\u5047\u5b57\u7b26\u4e32\u4e0a\u3002
\u3000\u3000\u95ee\u98985\uff1aconst & \u6307\u9488
\u3000\u3000\u7c7b\u578b\u58f0\u660e\u4e2dconst\u7528\u6765\u4fee\u9970\u4e00\u4e2a\u5e38\u91cf\uff0c\u6709\u5982\u4e0b\u4e24\u79cd\u5199\u6cd5\uff0c\u90a3\u4e48\uff0c\u8bf7\u95ee\uff0c\u4e0b\u9762\u5206\u522b\u7528const\u9650\u5b9a\u4e0d\u53ef\u53d8\u7684\u5185\u5bb9\u662f\u4ec0\u4e48?
\u3000\u30001)\u3001const\u5728\u524d\u9762
\u3000\u3000const int nValue\uff1b //nValue\u662fconst
\u3000\u3000const char *pContent; //*pContent\u662fconst, pContent\u53ef\u53d8
\u3000\u3000const (char *) pContent;//pContent\u662fconst,*pContent\u53ef\u53d8
\u3000\u3000char* const pContent; //pContent\u662fconst,*pContent\u53ef\u53d8
\u3000\u3000const char* const pContent; //pContent\u548c*pContent\u90fd\u662fconst
\u3000\u30002)\u3001const\u5728\u540e\u9762\uff0c\u4e0e\u4e0a\u9762\u7684\u58f0\u660e\u5bf9\u7b49
\u3000\u3000int const nValue\uff1b // nValue\u662fconst
\u3000\u3000char const * pContent;// *pContent\u662fconst, pContent\u53ef\u53d8
\u3000\u3000(char *) const pContent;//pContent\u662fconst,*pContent\u53ef\u53d8
\u3000\u3000char* const pContent;// pContent\u662fconst,*pContent\u53ef\u53d8
\u3000\u3000char const* const pContent;// pContent\u548c*pContent\u90fd\u662fconst
\u3000\u3000\u7b54\u6848\u4e0e\u5206\u6790\uff1a
\u3000\u3000const\u548c\u6307\u9488\u4e00\u8d77\u4f7f\u7528\u662fC\u8bed\u8a00\u4e2d\u4e00\u4e2a\u5f88\u5e38\u89c1\u7684\u56f0\u60d1\u4e4b\u5904\uff0c\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\uff0c\u7279\u522b\u662f\u5728\u770b\u522b\u4eba\u4ee3\u7801\u7684\u65f6\u5019\uff0c\u5e38\u5e38\u4f1a\u56e0\u4e3a\u8fd9\u6837\u800c\u4e0d\u597d\u5224\u65ad\u4f5c\u8005\u7684\u610f\u56fe\uff0c\u4e0b\u9762\u8bb2\u4e00\u4e0b\u6211\u7684\u5224\u65ad\u539f\u5219\uff1a
\u3000\u3000\u6cbf\u7740*\u53f7\u5212\u4e00\u6761\u7ebf\uff0c\u5982\u679cconst\u4f4d\u4e8e*\u7684\u5de6\u4fa7\uff0c\u5219const\u5c31\u662f\u7528\u6765\u4fee\u9970\u6307\u9488\u6240\u6307\u5411\u7684\u53d8\u91cf\uff0c\u5373\u6307\u9488\u6307\u5411\u4e3a\u5e38\u91cf\uff1b\u5982\u679cconst\u4f4d\u4e8e*\u7684\u53f3\u4fa7\uff0cconst\u5c31\u662f\u4fee\u9970\u6307\u9488\u672c\u8eab\uff0c\u5373\u6307\u9488\u672c\u8eab\u662f\u5e38\u91cf\u3002\u4f60\u53ef\u4ee5\u6839\u636e\u8fd9\u4e2a\u89c4\u5219\u6765\u770b\u4e0a\u9762\u58f0\u660e\u7684\u5b9e\u9645\u610f\u4e49\uff0c\u76f8\u4fe1\u5b9a\u4f1a\u4e00\u76ee\u4e86\u7136\u3002
\u3000\u3000\u53e6\u5916\uff0c\u9700\u8981\u6ce8\u610f\uff1a\u5bf9\u4e8econst (char *) ; \u56e0\u4e3achar *\u662f\u4e00\u4e2a\u6574\u4f53\uff0c\u76f8\u5f53\u4e8e\u4e00\u4e2a\u7c7b\u578b(\u5982 char)\uff0c\u56e0\u6b64\uff0c\u8fd9\u662f\u9650\u5b9a\u6307\u9488\u662fconst\u3002
[\u7f16\u8f91\u672c\u6bb5]C++\u4e2dCONST
\u3000\u3000C\u4e2d\u5e38\u7528:\u201c #define \u53d8\u91cf\u540d \u53d8\u91cf\u503c\u201d\u5b9a\u4e49\u4e00\u4e2a\u503c\u66ff\u4ee3,\u7136\u800c\u5374\u6709\u4e2a\u81f4\u547d\u7f3a\u70b9:\u7f3a\u4e4f\u7c7b\u578b\u68c0\u6d4b\u673a\u5236,\u8fd9\u6837\u9884\u5904\u7406\u5728C++\u4e2d\u6210\u4e3a\u53ef\u80fd\u5f15\u53d1\u9519\u8bef\u7684\u9690\u60a3,\u4e8e\u662f\u5f15\u5165const.
\u3000\u3000const\u4f7f\u7528:
\u3000\u30001. \u7528\u4e8e\u6307\u9488\u7684\u4e24\u79cd\u60c5\u51b5:const\u662f\u4e00\u4e2a\u5de6\u7ed3\u5408\u7684\u7c7b\u578b\u4fee\u9970\u7b26.
\u3000\u3000int const *A; //A\u53ef\u53d8,*A\u4e0d\u53ef\u53d8
\u3000\u3000int *const A; //A\u4e0d\u53ef\u53d8,*A\u53ef\u53d8
\u3000\u30002.\u9650\u5b9a\u51fd\u6570\u7684\u4f20\u9012\u503c\u53c2\u6570:
\u3000\u3000void function(const int Var); //\u4f20\u9012\u8fc7\u6765\u7684\u53c2\u6570\u5728\u51fd\u6570\u5185\u4e0d\u53ef\u4ee5\u6539\u53d8.
\u3000\u30003.\u9650\u5b9a\u51fd\u6570\u8fd4\u56de\u503c\u578b.
\u3000\u3000const int function(); //\u6b64\u65f6const\u65e0\u610f\u4e49
\u3000\u3000const myclassname function(); //\u51fd\u6570\u8fd4\u56de\u81ea\u5b9a\u4e49\u7c7b\u578bmyclassname.
\u3000\u30004\u9650\u5b9a\u51fd\u6570\u7c7b\u578b.
\u3000\u3000void function()const; //\u5e38\u6210\u5458\u51fd\u6570, Const\u6210\u5458\u51fd\u6570\u4e0d\u80fd\u6539\u53d8\u5bf9\u8c61\u7684\u6210\u5458\u51fd\u6570\u3002
\u3000\u3000\u4f8b\u5982\uff1a
\u3000\u3000int Point::GetY()
\u3000\u3000{
\u3000\u3000return yVal;
\u3000\u3000}
\u3000\u3000\u8fd9\u4e2a\u51fd\u6570\u88ab\u8c03\u7528\u65f6\uff0c\u4e0d\u6539\u53d8Point\u5bf9\u8c61\uff0c\u800c\u4e0b\u9762\u7684\u51fd\u6570\u6539\u53d8Point\u5bf9\u8c61\uff1a
\u3000\u3000void Point:: SetPt (int x, int y)
\u3000\u3000{
\u3000\u3000xVal=x;
\u3000\u3000yVal=y;
\u3000\u3000}
\u3000\u3000\u4e3a\u4e86\u4f7f\u6210\u5458\u51fd\u6570\u7684\u610f\u4e49\u66f4\u52a0\u6e05\u695a\uff0c\u6211\u4eec\u53ef\u5728\u4e0d\u6539\u53d8\u5bf9\u8c61\u7684\u6210\u5458\u51fd\u6570\u7684\u51fd\u6570\u539f\u578b\u4e2d\u52a0\u4e0aconst\u8bf4\u660e\uff1a
\u3000\u3000class Point
\u3000\u3000{
\u3000\u3000public:
\u3000\u3000int GetX() const;
\u3000\u3000int GetY() const;
\u3000\u3000void SetPt (int, int);
\u3000\u3000void OffsetPt (int, int);
\u3000\u3000private:
\u3000\u3000int xVal, yVal;
\u3000\u3000};
\u3000\u3000const\u6210\u5458\u51fd\u6570\u5e94\u8be5\u5728\u51fd\u6570\u539f\u578b\u8bf4\u660e\u548c\u51fd\u6570\u5b9a\u4e49\u4e2d\u90fd\u589e\u52a0const\u9650\u5b9a\uff1a
\u3000\u3000int Point::GetY() const
\u3000\u3000{
\u3000\u3000return yVal;
\u3000\u3000}
\u3000\u3000class Set {
\u3000\u3000public:
\u3000\u3000Set (void){ card = 0; }
\u3000\u3000bool Member(const int) const;
\u3000\u3000void AddElem(const int);
\u3000\u3000//...
\u3000\u3000};
\u3000\u3000bool Set::Member (const int elem) const
\u3000\u3000{
\u3000\u3000//...
\u3000\u3000}
\u3000\u3000\u975e\u5e38\u91cf\u6210\u5458\u51fd\u6570\u4e0d\u80fd\u88ab\u5e38\u91cf\u6210\u5458\u5bf9\u8c61\u8c03\u7528\uff0c\u56e0\u4e3a\u5b83\u53ef\u80fd\u4f01\u56fe\u4fee\u6539\u5e38\u91cf\u7684\u6570\u636e\u6210\u5458\uff1a
\u3000\u3000const Set s;
\u3000\u3000s.AddElem(10); // \u975e\u6cd5: AddElem\u4e0d\u662f\u5e38\u91cf\u6210\u5458\u51fd\u6570
\u3000\u3000s.Member(10); // \u6b63\u786e
\u3000\u3000\u4f46\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u5bf9\u8fd9\u4e2a\u89c4\u5219\u4f8b\u5916\uff0c\u5b83\u4eec\u4ece\u4e0d\u5b9a\u4e49\u4e3a\u5e38\u91cf\u6210\u5458\uff0c\u4f46\u53ef\u88ab\u5e38\u91cf\u5bf9\u8c61\u8c03\u7528\uff08\u88ab\u81ea\u52a8\u8c03\u7528\uff09\u3002\u5b83\u4eec\u4e5f\u80fd\u7ed9\u5e38\u91cf\u7684\u6570\u636e\u6210\u5458\u8d4b\u503c\uff0c\u9664\u975e\u6570\u636e\u6210\u5458\u672c\u8eab\u662f\u5e38\u91cf\u3002
\u3000\u3000\u4e3a\u4ec0\u4e48\u9700\u8981const\u6210\u5458\u51fd\u6570\uff1f
\u3000\u3000\u6211\u4eec\u5b9a\u4e49\u7684\u7c7b\u7684\u6210\u5458\u51fd\u6570\u4e2d\uff0c\u5e38\u5e38\u6709\u4e00\u4e9b\u6210\u5458\u51fd\u6570\u4e0d\u6539\u53d8\u7c7b\u7684\u6570\u636e\u6210\u5458\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u4e9b\u51fd\u6570\u662f"\u53ea\u8bfb"\u51fd\u6570\uff0c\u800c\u6709\u4e00\u4e9b\u51fd\u6570\u8981\u4fee\u6539\u7c7b\u6570\u636e\u6210\u5458\u7684\u503c\u3002\u5982\u679c\u628a\u4e0d\u6539\u53d8\u6570\u636e\u6210\u5458\u7684\u51fd\u6570\u90fd\u52a0\u4e0aconst\u5173\u952e\u5b57\u8fdb\u884c\u6807\u8bc6\uff0c\u663e\u7136\uff0c\u53ef\u63d0\u9ad8\u7a0b\u5e8f\u7684\u53ef\u8bfb\u6027\u3002\u5176\u5b9e\uff0c\u5b83\u8fd8\u80fd\u63d0\u9ad8\u7a0b\u5e8f\u7684\u53ef\u9760\u6027\uff0c\u5df2\u5b9a\u4e49\u6210const\u7684\u6210\u5458\u51fd\u6570\uff0c\u4e00\u65e6\u4f01\u56fe\u4fee\u6539\u6570\u636e\u6210\u5458\u7684\u503c\uff0c\u5219\u7f16\u8bd1\u5668\u6309\u9519\u8bef\u5904\u7406\u3002
\u3000\u3000const\u6210\u5458\u51fd\u6570\u548cconst\u5bf9\u8c61
\u3000\u3000\u5b9e\u9645\u4e0a\uff0cconst\u6210\u5458\u51fd\u6570\u8fd8\u6709\u53e6\u5916\u4e00\u9879\u4f5c\u7528\uff0c\u5373\u5e38\u91cf\u5bf9\u8c61\u76f8\u5173\u3002\u5bf9\u4e8e\u5185\u7f6e\u7684\u6570\u636e\u7c7b\u578b\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9a\u4e49\u5b83\u4eec\u7684\u5e38\u91cf\uff0c\u7528\u6237\u81ea\u5b9a\u4e49\u7684\u7c7b\u4e5f\u4e00\u6837\uff0c\u53ef\u4ee5\u5b9a\u4e49\u5b83\u4eec\u7684\u5e38\u91cf\u5bf9\u8c61\u3002\u4f8b\u5982\uff0c\u5b9a\u4e49\u4e00\u4e2a\u6574\u578b\u5e38\u91cf\u7684\u65b9\u6cd5\u4e3a\uff1a
\u3000\u3000const int i=1 \uff1b
\u3000\u3000\u540c\u6837\uff0c\u4e5f\u53ef\u4ee5\u5b9a\u4e49\u5e38\u91cf\u5bf9\u8c61\uff0c\u5047\u5b9a\u6709\u4e00\u4e2a\u7c7bclassA\uff0c\u5b9a\u4e49\u8be5\u7c7b\u7684\u5e38\u91cf\u5bf9\u8c61\u7684\u65b9\u6cd5\u4e3a\uff1a
\u3000\u3000const classA a(2)\uff1b
\u3000\u3000\u8fd9\u91cc\uff0ca\u662f\u7c7bclassA\u7684\u4e00\u4e2aconst\u5bf9\u8c61\uff0c"2"\u4f20\u7ed9\u5b83\u7684\u6784\u9020\u51fd\u6570\u53c2\u6570\u3002const\u5bf9\u8c61\u7684\u6570\u636e\u6210\u5458\u5728\u5bf9\u8c61\u5bff\u547d\u671f\u5185\u4e0d\u80fd\u6539\u53d8\u3002\u4f46\u662f\uff0c\u5982\u4f55\u4fdd\u8bc1\u8be5\u7c7b\u7684\u6570\u636e\u6210\u5458\u4e0d\u88ab\u6539\u53d8\u5462\uff1f
\u3000\u3000\u4e3a\u4e86\u786e\u4fddconst\u5bf9\u8c61\u7684\u6570\u636e\u6210\u5458\u4e0d\u4f1a\u88ab\u6539\u53d8\uff0c\u5728C++\u4e2d\uff0cconst\u5bf9\u8c61\u53ea\u80fd\u8c03\u7528const\u6210\u5458\u51fd\u6570\u3002\u5982\u679c\u4e00\u4e2a\u6210\u5458\u51fd\u6570\u5b9e\u9645\u4e0a\u6ca1\u6709\u5bf9\u6570\u636e\u6210\u5458\u4f5c\u4efb\u4f55\u5f62\u5f0f\u7684\u4fee\u6539\uff0c\u4f46\u662f\u5b83\u6ca1\u6709\u88abconst\u5173\u952e\u5b57\u9650\u5b9a\u7684\uff0c\u4e5f\u4e0d\u80fd\u88ab\u5e38\u91cf\u5bf9\u8c61\u8c03\u7528\u3002\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u8bf4\u660e\u8fd9\u4e2a\u95ee\u9898\uff1a
\u3000\u3000class C
\u3000\u3000{
\u3000\u3000int X;
\u3000\u3000public:
\u3000\u3000int GetX()
\u3000\u3000{
\u3000\u3000return X;
\u3000\u3000}
\u3000\u3000void SetX(int X)
\u3000\u3000{
\u3000\u3000this->X = X;
\u3000\u3000}
\u3000\u3000};
\u3000\u3000void main()
\u3000\u3000{
\u3000\u3000const C constC;
\u3000\u3000cout<<constC.GetX();
\u3000\u3000}
\u3000\u3000\u5982\u679c\u6211\u4eec\u7f16\u8bd1\u4e0a\u9762\u7684\u7a0b\u5e8f\u4ee3\u7801\uff0c\u7f16\u8bd1\u5668\u4f1a\u51fa\u73b0\u9519\u8bef\u63d0\u793a\uff1aconstC\u662f\u4e2a\u5e38\u91cf\u5bf9\u8c61\uff0c\u5b83\u53ea\u80fd\u8c03\u7528const\u6210\u5458\u51fd\u6570\u3002\u867d\u7136GetX( )\u51fd\u6570\u5b9e\u9645\u4e0a\u5e76\u6ca1\u6709\u6539\u53d8\u6570\u636e\u6210\u5458X\uff0c\u7531\u4e8e\u6ca1\u6709const\u5173\u952e\u5b57\u9650\u5b9a\uff0c\u6240\u4ee5\u4ecd\u65e7\u4e0d\u80fd\u88abconstC\u5bf9\u8c61\u8c03\u7528\u3002\u5982\u679c\u6211\u4eec\u5c06\u4e0a\u8ff0\u52a0\u7c97\u7684\u4ee3\u7801\uff1a
\u3000\u3000int GetX()
\u3000\u3000\u6539\u5199\u6210\uff1a
\u3000\u3000int GetX()const
\u3000\u3000\u518d\u91cd\u65b0\u7f16\u8bd1\uff0c\u5c31\u6ca1\u6709\u95ee\u9898\u4e86\u3002
\u3000\u3000const\u6210\u5458\u51fd\u6570\u7684\u4f7f\u7528
\u3000\u3000const\u6210\u5458\u51fd\u6570\u8868\u793a\u8be5\u6210\u5458\u51fd\u6570\u53ea\u80fd\u8bfb\u7c7b\u6570\u636e\u6210\u5458\uff0c\u800c\u4e0d\u80fd\u4fee\u6539\u7c7b\u6210\u5458\u6570\u636e\u3002\u5b9a\u4e49const\u6210\u5458\u51fd\u6570\u65f6\uff0c\u628aconst\u5173\u952e\u5b57\u653e\u5728\u51fd\u6570\u7684\u53c2\u6570\u8868\u548c\u51fd\u6570\u4f53\u4e4b\u95f4\u3002\u6709\u4eba\u53ef\u80fd\u4f1a\u95ee\uff1a\u4e3a\u4ec0\u4e48\u4e0d\u5c06const\u653e\u5728\u51fd\u6570\u58f0\u660e\u524d\u5462\uff1f\u56e0\u4e3a\u8fd9\u6837\u505a\u610f\u5473\u7740\u51fd\u6570\u7684\u8fd4\u56de\u503c\u662f\u5e38\u91cf\uff0c\u610f\u4e49\u5b8c\u5168\u4e0d\u540c\u3002\u4e0b\u9762\u662f\u5b9a\u4e49const\u6210\u5458\u51fd\u6570\u7684\u4e00\u4e2a\u5b9e\u4f8b\uff1a
\u3000\u3000class X
\u3000\u3000{
\u3000\u3000int i;
\u3000\u3000public:
\u3000\u3000int f() const;
\u3000\u3000};
\u3000\u3000\u5173\u952e\u5b57const\u5fc5\u987b\u7528\u540c\u6837\u7684\u65b9\u5f0f\u91cd\u590d\u51fa\u73b0\u5728\u51fd\u6570\u5b9e\u73b0\u91cc\uff0c\u5426\u5219\u7f16\u8bd1\u5668\u4f1a\u628a\u5b83\u770b\u6210\u4e00\u4e2a\u4e0d\u540c\u7684\u51fd\u6570\uff1a
\u3000\u3000int X::f() const
\u3000\u3000{
\u3000\u3000return i;
\u3000\u3000}
\u3000\u3000\u5982\u679cf( )\u8bd5\u56fe\u7528\u4efb\u4f55\u65b9\u5f0f\u6539\u53d8i\u6216\u8c03\u7528\u53e6\u4e00\u4e2a\u975econst\u6210\u5458\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u5c06\u7ed9\u51fa\u9519\u8bef\u4fe1\u606f\u3002\u4efb\u4f55\u4e0d\u4fee\u6539\u6210\u5458\u6570\u636e\u7684\u51fd\u6570\u90fd\u5e94\u8be5\u58f0\u660e\u4e3aconst\u51fd\u6570\uff0c\u8fd9\u6837\u6709\u52a9\u4e8e\u63d0\u9ad8\u7a0b\u5e8f\u7684\u53ef\u8bfb\u6027\u548c\u53ef\u9760\u6027\u3002

C#.net\u4e2d\u7684const
\u3000\u3000const \u5173\u952e\u5b57\u7528\u4e8e\u4fee\u6539\u5b57\u6bb5\u6216\u5c40\u90e8\u53d8\u91cf\u7684\u58f0\u660e\u3002\u5b83\u6307\u5b9a\u5b57\u6bb5\u6216\u5c40\u90e8\u53d8\u91cf\u7684\u503c\u662f\u5e38\u6570\uff0c\u4e0d\u80fd\u88ab\u4fee\u6539\u3002\u4f8b\u5982\uff1a
\u3000\u3000const int x = 0;
\u3000\u3000public const double gravitationalConstant = 6.673e-11;
\u3000\u3000private const string productName = "Visual C#";
\u3000\u3000\u5907\u6ce8
\u3000\u3000\u5e38\u6570\u58f0\u660e\u7684\u7c7b\u578b\u6307\u5b9a\u58f0\u660e\u5f15\u5165\u7684\u6210\u5458\u7c7b\u578b\u3002\u5e38\u6570\u8868\u8fbe\u5f0f\u5fc5\u987b\u4ea7\u751f\u5177\u6709\u76ee\u6807\u7c7b\u578b\u6216\u8005\u53ef\u9690\u5f0f\u8f6c\u6362\u4e3a\u76ee\u6807\u7c7b\u578b\u7684\u7c7b\u578b\u7684\u503c\u3002
\u3000\u3000\u5e38\u6570\u8868\u8fbe\u5f0f\u662f\u5728\u7f16\u8bd1\u65f6\u53ef\u88ab\u5b8c\u5168\u8ba1\u7b97\u7684\u8868\u8fbe\u5f0f\u3002\u56e0\u6b64\uff0c\u5bf9\u4e8e\u5f15\u7528\u7c7b\u578b\u7684\u5e38\u6570\uff0c\u53ef\u80fd\u7684\u503c\u53ea\u80fd\u662f string \u548c null\u3002
\u3000\u3000\u5e38\u6570\u58f0\u660e\u53ef\u4ee5\u58f0\u660e\u591a\u4e2a\u5e38\u6570\uff0c\u4f8b\u5982\uff1a
\u3000\u3000public const double x = 1.0, y = 2.0, z = 3.0;
\u3000\u3000\u4e0d\u5141\u8bb8\u5728\u5e38\u6570\u58f0\u660e\u4e2d\u4f7f\u7528 static \u4fee\u9970\u7b26\u3002
\u3000\u3000\u5e38\u6570\u53ef\u4ee5\u53c2\u4e0e\u5e38\u6570\u8868\u8fbe\u5f0f\uff0c\u5982\u4e0b\u6240\u793a\uff1a
\u3000\u3000public const int c1 = 5;
\u3000\u3000public const int c2 = c1 + 100;
\u3000\u3000\u6ce8\u610f
\u3000\u3000readonly \u5173\u952e\u5b57\u4e0e const \u5173\u952e\u5b57\u4e0d\u540c\u3002const \u5b57\u6bb5\u53ea\u80fd\u5728\u8be5\u5b57\u6bb5\u7684\u58f0\u660e\u4e2d\u521d\u59cb\u5316\u3002readonly \u5b57\u6bb5\u53ef\u4ee5\u5728\u58f0\u660e\u6216\u6784\u9020\u51fd\u6570\u4e2d\u521d\u59cb\u5316\u3002\u56e0\u6b64\uff0c\u6839\u636e\u6240\u4f7f\u7528\u7684\u6784\u9020\u51fd\u6570\uff0creadonly \u5b57\u6bb5\u53ef\u80fd\u5177\u6709\u4e0d\u540c\u7684\u503c\u3002\u53e6\u5916\uff0cconst \u5b57\u6bb5\u662f\u7f16\u8bd1\u65f6\u5e38\u6570\uff0c\u800c readonly \u5b57\u6bb5\u53ef\u7528\u4e8e\u8fd0\u884c\u65f6\u5e38\u6570\uff0c\u5982\u4e0b\u9762\u7684\u4ee3\u7801\u884c\u6240\u793a\uff1apublic static readonly uint l1 = (uint)DateTime.Now.Ticks;

1. const\u5e38\u91cf\uff0c\u5982const int max = 100;
\u4f18\u70b9\uff1aconst\u5e38\u91cf\u6709\u6570\u636e\u7c7b\u578b\uff0c\u800c\u5b8f\u5e38\u91cf\u6ca1\u6709\u6570\u636e\u7c7b\u578b\u3002\u7f16\u8bd1\u5668\u53ef\u4ee5\u5bf9\u524d\u8005\u8fdb\u884c\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\uff0c\u800c\u5bf9\u540e\u8005\u53ea\u8fdb\u884c\u5b57\u7b26\u66ff\u6362\uff0c\u6ca1\u6709\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\uff0c\u5e76\u4e14\u5728\u5b57\u7b26\u66ff\u6362\u65f6\u53ef\u80fd\u4f1a\u4ea7\u751f\u610f\u6599\u4e0d\u5230\u7684\u9519\u8bef\u3002
2. const \u4fee\u9970\u7c7b\u7684\u6570\u636e\u6210\u5458\u3002
const\u6570\u636e\u6210\u5458\u53ea\u5728\u67d0\u4e2a\u5bf9\u8c61\u751f\u5b58\u671f\u5185\u662f\u5e38\u91cf\uff0c\u800c\u5bf9\u4e8e\u6574\u4e2a\u7c7b\u800c\u8a00\u5374\u662f\u53ef\u53d8\u7684\u3002\u56e0\u4e3a\u7c7b\u53ef\u4ee5\u521b\u5efa\u591a\u4e2a\u5bf9\u8c61\uff0c\u4e0d\u540c\u7684\u5bf9\u8c61\u5176const\u6570\u636e\u6210\u5458\u7684\u503c\u53ef\u4ee5\u4e0d\u540c\u3002\u6240\u4ee5\u4e0d\u80fd\u5728\u7c7b\u58f0\u660e\u4e2d\u521d\u59cb\u5316const\u6570\u636e\u6210\u5458\uff0c\u56e0\u4e3a\u7c7b\u7684\u5bf9\u8c61\u672a\u88ab\u521b\u5efa\u65f6\uff0c\u7f16\u8bd1\u5668\u4e0d\u77e5\u9053const \u6570\u636e\u6210\u5458\u7684\u503c\u662f\u4ec0\u4e48\u3002 const\u6570\u636e\u6210\u5458\u7684\u521d\u59cb\u5316\u53ea\u80fd\u5728\u7c7b\u7684\u6784\u9020\u51fd\u6570\u7684\u521d\u59cb\u5316\u8868\u4e2d\u8fdb\u884c\u3002
3. const\u4fee\u9970\u6307\u9488\u7684\u60c5\u51b5\uff0c\u89c1\u4e0b\u5f0f\uff1a
const int* a = & [1]
int const *a = & [2]
int* const a = & [3]
const int* const a = & [4]
\u53ef\u4ee5\u53c2\u8003\u300aEffective c++\u300bItem21\u4e0a\u7684\u505a\u6cd5\uff0c\u5982\u679cconst\u4f4d\u4e8e\u661f\u53f7\u7684\u5de6\u4fa7\uff0c\u5219const\u5c31\u662f\u7528\u6765\u4fee\u9970\u6307\u9488\u6240\u6307\u5411\u7684\u53d8\u91cf\uff0c\u5373\u6307\u9488\u6307\u5411\u4e3a\u5e38\u91cf\uff1b\u5982\u679cconst\u4f4d\u4e8e\u661f\u53f7\u7684\u53f3\u4fa7\uff0cconst\u5c31\u662f\u4fee\u9970\u6307\u9488\u672c\u8eab\uff0c\u5373\u6307\u9488\u672c\u8eab\u662f\u5e38\u91cf\u3002\u56e0\u6b64\uff0c[1]\u548c[2]\u7684\u60c5\u51b5\u76f8\u540c\uff0c\u90fd\u662f\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\u4e3a\u5e38\u91cf\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u4e0d\u5141\u8bb8\u5bf9\u5185\u5bb9\u8fdb\u884c\u66f4\u6539\u64cd\u4f5c\uff0c\u5982\u4e0d\u80fd*a = 3 \uff1b[3]\u4e3a\u6307\u9488\u672c\u8eab\u662f\u5e38\u91cf\uff0c\u800c\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\u4e0d\u662f\u5e38\u91cf\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e0b\u4e0d\u80fd\u5bf9\u6307\u9488\u672c\u8eab\u8fdb\u884c\u66f4\u6539\u64cd\u4f5c\uff0c\u5982a++\u662f\u9519\u8bef\u7684\uff1b[4]\u4e3a\u6307\u9488\u672c\u8eab\u548c\u6307\u5411\u7684\u5185\u5bb9\u5747\u4e3a\u5e38\u91cf\u3002
4. const\u7684\u521d\u59cb\u5316
\u5148\u770b\u4e00\u4e0bconst\u53d8\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5
1) \u975e\u6307\u9488const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1aA b;
const A a = b;
2) \u6307\u9488const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1a
A* d = new A();
const A* c = d;
\u6216\u8005\uff1aconst A* c = new A();
3\uff09\u5f15\u7528const\u5e38\u91cf\u521d\u59cb\u5316\u7684\u60c5\u51b5\uff1a
A f;
const A& e = f; // \u8fd9\u6837\u4f5ce\u53ea\u80fd\u8bbf\u95ee\u58f0\u660e\u4e3aconst\u7684\u51fd\u6570\uff0c\u800c\u4e0d\u80fd\u8bbf\u95ee\u4e00\u822c\u7684\u6210\u5458\u51fd\u6570\uff1b
5. const\u5728\u51fd\u6570\u58f0\u660e\u4e2d\u7684\u5e94\u7528
\u5728\u51fd\u6570\u58f0\u660e\u4e2d\uff0cconst \u53ef\u4ee5\u4fee\u9970\u51fd\u6570\u7684\u8fd4\u56de\u503c\uff0c\u6216\u67d0\u4e2a\u53c2\u6570\uff1b\u5bf9\u4e8e\u6210\u5458\u51fd\u6570\uff0c\u8fd8\u53ef\u4ee5\u4fee\u9970\u662f\u6574\u4e2a\u51fd\u6570\u3002
1\uff09 \u4fee\u9970\u53c2\u6570\u7684const-HEIGHT: 150%; FONT-FAMILY: \u5b8b\u4f53">\uff0c\u5982 void fun0(const A* a ); void fun1(const A& a);
\u8c03\u7528\u51fd\u6570\u7684\u65f6\u5019\uff0c\u7528\u76f8\u5e94\u7684\u53d8\u91cf\u521d\u59cb\u5316const\u5e38\u91cf\uff0c\u5219\u5728\u51fd\u6570\u4f53\u4e2d\uff0c\u6309\u7167const\u6240\u4fee\u9970\u7684\u90e8\u5206\u8fdb\u884c\u5e38\u91cf\u5316\uff0c\u5982\u5f62\u53c2\u4e3aconst A* a\uff0c\u5219\u4e0d\u80fd\u5bf9\u4f20\u9012\u8fdb\u6765\u7684\u6307\u9488\u7684\u5185\u5bb9\u8fdb\u884c\u6539\u53d8\uff0c\u4fdd\u62a4\u4e86\u539f\u6307\u9488\u6240\u6307\u5411\u7684\u5185\u5bb9\uff1b\u5982\u5f62\u53c2\u4e3aconst A& a\uff0c\u5219\u4e0d\u80fd\u5bf9\u4f20\u9012\u8fdb\u6765\u7684\u5f15\u7528\u5bf9\u8c61\u8fdb\u884c\u6539\u53d8\uff0c\u4fdd\u62a4\u4e86\u539f\u5bf9\u8c61\u7684\u5c5e\u6027\u3002
[\u6ce8\u610f]\uff1a\u53c2\u6570const\u901a\u5e38\u7528\u4e8e\u53c2\u6570\u4e3a\u6307\u9488\u6216\u5f15\u7528\u7684\u60c5\u51b5\uff0c\u4e14\u53ea\u80fd\u4fee\u9970\u8f93\u5165\u53c2\u6570;\u82e5\u8f93\u5165\u53c2\u6570\u91c7\u7528\u201c\u503c\u4f20\u9012\u201d\u65b9\u5f0f\uff0c\u7531\u4e8e\u51fd\u6570\u5c06\u81ea\u52a8\u4ea7\u751f\u4e34\u65f6\u53d8\u91cf\u7528\u4e8e\u590d\u5236\u8be5\u53c2\u6570\uff0c\u8be5\u53c2\u6570\u672c\u5c31\u4e0d\u9700\u8981\u4fdd\u62a4\uff0c\u6240\u4ee5\u4e0d\u7528const\u4fee\u9970\u3002
[\u603b\u7ed3]\u5bf9\u4e8e\u975e\u5185\u90e8\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\u53c2\u6570\uff0c\u5e94\u8be5\u5c06\u201c\u503c\u4f20\u9012\u201d\u7684\u65b9\u5f0f\u6539\u4e3a\u201cconst\u5f15\u7528\u4f20\u9012\u201d\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u63d0\u9ad8\u6548\u7387\u3002\u4f8b\u5982\uff0c\u5c06void Func(A a)\u6539\u4e3avoid Func(const A &a)
\u5bf9\u4e8e\u5185\u90e8\u6570\u636e\u7c7b\u578b\u7684\u8f93\u5165\u53c2\u6570\uff0c\u4e0d\u8981\u5c06\u201c\u503c\u4f20\u9012\u201d\u7684\u65b9\u5f0f\u6539\u4e3a\u201cconst\u5f15\u7528\u4f20\u9012\u201d\u3002\u5426\u5219\u65e2\u8fbe\u4e0d\u5230\u63d0\u9ad8\u6548\u7387\u7684\u76ee\u7684\uff0c\u53c8\u964d\u4f4e\u4e86\u51fd\u6570\u7684\u53ef\u7406\u89e3\u6027\u3002\u4f8b\u5982void Func(int x)\u4e0d\u5e94\u8be5\u6539\u4e3avoid Func(const int &x)
2\uff09 \u4fee\u9970\u8fd4\u56de\u503c\u7684const\uff0c\u5982const A fun2( ); const A* fun3( );
\u8fd9\u6837\u58f0\u660e\u4e86\u8fd4\u56de\u503c\u540e\uff0cconst\u6309\u7167"\u4fee\u9970\u539f\u5219"\u8fdb\u884c\u4fee\u9970\uff0c\u8d77\u5230\u76f8\u5e94\u7684\u4fdd\u62a4\u4f5c\u7528\u3002
[\u603b\u7ed3] 1\uff09 \u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u51fd\u6570\u7684\u8fd4\u56de\u503c\u4e3a\u67d0\u4e2a\u5bf9\u8c61\u65f6\uff0c\u5982\u679c\u5c06\u5176\u58f0\u660e\u4e3aconst\u65f6\uff0c\u591a\u7528\u4e8e\u64cd\u4f5c\u7b26\u7684\u91cd\u8f7d\u3002\u901a\u5e38\uff0c\u4e0d\u5efa\u8bae\u7528const\u4fee\u9970\u51fd\u6570\u7684\u8fd4\u56de\u503c\u7c7b\u578b\u4e3a\u67d0\u4e2a\u5bf9\u8c61\u6216\u5bf9\u67d0\u4e2a\u5bf9\u8c61\u5f15\u7528\u7684\u60c5\u51b5\u30022\uff09\u5982\u679c\u7ed9\u91c7\u7528\u201c\u6307\u9488\u4f20\u9012\u201d\u65b9\u5f0f\u7684\u51fd\u6570\u8fd4\u56de\u503c\u52a0const\u4fee\u9970\uff0c\u90a3\u4e48\u51fd\u6570\u8fd4\u56de\u503c\uff08\u5373\u6307\u9488\uff09\u7684\u5185\u5bb9\u4e0d\u80fd\u88ab\u4fee\u6539\uff0c\u8be5\u8fd4\u56de\u503c\u53ea\u80fd\u88ab\u8d4b\u7ed9\u52a0const \u4fee\u9970\u7684\u540c\u7c7b\u578b\u6307\u9488\u3002
6. \u7c7b\u6210\u5458\u51fd\u6570\u4e2dconst\u7684\u4f7f\u7528
\u4e00\u822c\u653e\u5728\u51fd\u6570\u4f53\u540e\uff0c\u5f62\u5982\uff1avoid fun() const; \u4efb\u4f55\u4e0d\u4f1a\u4fee\u6539\u6570\u636e\u6210\u5458\u7684\u51fd\u6570\u90fd\u56e0\u8be5\u58f0\u660e\u4e3aconst\u7c7b\u578b\u3002\u5982\u679c\u5728\u7f16\u5199const\u6210\u5458\u51fd\u6570\u65f6\uff0c\u4e0d\u614e\u4fee\u6539\u4e86\u6570\u636e\u6210\u5458\uff0c\u6216\u8005\u8c03\u7528\u4e86\u5176\u4ed6\u975econst\u6210\u5458\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u5c06\u62a5\u9519\uff0c\u8fd9\u5927\u5927\u63d0\u9ad8\u4e86\u7a0b\u5e8f\u7684\u5065\u58ee\u6027\u3002
7. \u4f7f\u7528const\u7684\u4e00\u4e9b\u5efa\u8bae
1 \uff09\u8981\u5927\u80c6\u7684\u4f7f\u7528const\uff0c\u8fd9\u5c06\u7ed9\u4f60\u5e26\u6765\u65e0\u5c3d\u7684\u76ca\u5904\uff0c\u4f46\u524d\u63d0\u662f\u4f60\u5fc5\u987b\u641e\u6e05\u695a\u539f\u59d4\uff1b
2 \uff09\u8981\u907f\u514d\u6700\u4e00\u822c\u7684\u8d4b\u503c\u64cd\u4f5c\u9519\u8bef\uff0c\u5982\u5c06const\u53d8\u91cf\u8d4b\u503c\uff0c\u5177\u4f53\u53ef\u89c1\u601d\u8003\u9898\uff1b
3 \uff09\u5728\u53c2\u6570\u4e2d\u4f7f\u7528const\u5e94\u8be5\u4f7f\u7528\u5f15\u7528\u6216\u6307\u9488\uff0c\u800c\u4e0d\u662f\u4e00\u822c\u7684\u5bf9\u8c61\u5b9e\u4f8b\uff0c\u539f\u56e0\u540c\u4e0a\uff1b
4 \uff09const\u5728\u6210\u5458\u51fd\u6570\u4e2d\u7684\u4e09\u79cd\u7528\u6cd5\uff08\u53c2\u6570\u3001\u8fd4\u56de\u503c\u3001\u51fd\u6570\uff09\u8981\u5f88\u597d\u7684\u4f7f\u7528\uff1b
5 \uff09\u4e0d\u8981\u8f7b\u6613\u7684\u5c06\u51fd\u6570\u7684\u8fd4\u56de\u503c\u7c7b\u578b\u5b9a\u4e3aconst;
6 \uff09\u9664\u4e86\u91cd\u8f7d\u64cd\u4f5c\u7b26\u5916\u4e00\u822c\u4e0d\u8981\u5c06\u8fd4\u56de\u503c\u7c7b\u578b\u5b9a\u4e3a\u5bf9\u67d0\u4e2a\u5bf9\u8c61\u7684const\u5f15\u7528\u3002

例:const int a = 512 ;
注解:因为const对象在定义后就不能修改,所以定义时必须初始化。
const引用C++ Primer中写道const引用是指向const对象的引用。我认为至少不够精确,这句话意在强调非const引用是指向const对象是错误的,但是没有说明const引用也可以指向一般的对象。我给出的定义是:const引用是这样的一种引用,它只能读取指向对象的值,但不能修改其指向对象的值。
例:const int a = 512;
int b = 1024;
const int &c = a; //正确!
const int &d = b; //正确!
int &e = a; //错误!
指向const对象的指针
这是C++Primer对这种指针的称呼。这种用法跟上文的const引用是类似的。同样,把这种指针称作指向const对象的指针是不够精确的,因为它也可以指向非const对象,只不过这种指针自以为指向const对象,即,这种指针只能读取指向对象的值,但不能修改其指向对象的值,无论这个对象是不是const对象。
例:const int a = 512;
int b = 1024;
const int *c = &a; //正确!
c = &b; //正确!
int *d = &a; //错误!const指针这也是C++Primer对这种指针的称呼。这种说法容易与const引用混淆,事实上表达的意义完全不同。const指针的特点是本身的值不能修改。任何企图给const指针赋值的行为(即使给该指针赋本身的值)都会导致编译时的错误。
例: int a = 0;
int *const b = &a;
b = c; //c是另外一个指针,错误!
b = b; //赋本身的值,错误!
指向const对象的const指针
别被绕晕了,其实就是上述两种指针的结合体。这种指针,既不能修改本身的值,也不能修改其所指向对象的值。
例:const int a = 0;
const int *const b = &a;
const成员函数
又被称作常量成员函数。这种成员函数只能读取而不能修改其所属对象的数据成员。
例: class A{public:bool IsSame(const A &a)const;};其它相关:const_iterator
每种容器类型中都定义了const_iterator类型,这种类型只能用于读取容器内的元素,但不能改变其值。

  • 涓轰粈涔堜笉鑳藉皢const鎸囬拡璧嬬粰闈瀋onst鎸囬拡,鑰岃兘鍙嶈繃鏉ュ紕
    绛旓細闃叉浣犺鎿嶄綔鍢涖傘傘const淇グ鐨勫璞′笉鑳借繘琛屽啓鎿嶄綔锛屽鏋滀綘鍙互鐩存帴璧嬪间笉灏辫兘淇敼閭d釜瀵硅薄鐨勫间簡鍢涖傘傘備絾鏄彲浠ヨ繘琛岀被鍨嬭浆鎹傘傘俢onst int i = 0;int* p = (int*)&i;杩欐牱灏辨病闂浜嗭紝浣嗘槸涓嶆帹鑽愩傜悊鐢卞悓涓娿傚叾瀹C鐨绫诲瀷闄愬埗寰堣杽寮辩殑銆傘傛瘮濡備互涓嬩唬鐮佹病鏈夌被鍨嬭浆鎹㈠嵈涔熸病鏈夐敊璇俢onst int ...
  • const淇グ鐨鍙鍙橀噺蹇呴』鍦ㄥ畾涔夌殑鍚屾椂鍒濆鍖,鎯虫兂涓轰粈涔?
    绛旓細鍦ㄥ畾涔夌殑鏃跺欏氨鎶婂畠鐨勫唴瀛樼┖闂寸粰闄愬埗姝讳簡锛岃鏄笉鍒濆鍖栵紝閭e潡鍖哄煙姘歌繙灏辨槸閭d釜鏍峰瓙浜唦~~C璇█鏍囧噯瑙勫畾鐨勩傘傘
  • 姹傛暀澶х墰:T const&涓嶵 &鏄粈涔堟剰鎬?
    绛旓細濡傛灉杩斿洖鍊兼槸寮曠敤锛屽氨鍙互浣滀负宸﹀硷細a.top() = 10; //濡傛灉a 涓嶆槸甯稿璞,杩欏彞鎶奱鐨刣ata_[top_-1]淇敼涓10浜嗭紱甯稿璞″氨鏄畾涔夌被瀵硅薄鏃跺姞涓奵onst闄愬畾绗︺俢onst CA a;甯稿璞″彧鑳借皟鐢ㄥ父鎴愬憳鍑芥暟锛屼篃灏辨槸鍦ㄥ嚱鏁版湭灏惧姞浜const闄愬畾绗︾殑鎴愬憳鍑芥暟锛岃屽湪甯告垚鍛樺嚱鏁伴噷涓嶈兘淇敼绫荤殑鏁版嵁鎴愬憳銆備笉鐭ヨ繖鏍...
  • C++涓,int *& 涓 int &* 鐨勫尯鍒佹剰涔夊強浣跨敤
    绛旓細浠庤娉曠殑瑙掑害瑙i噴..a 鏄 鏍囪瘑绗 &a 寮曠敤 &a 鎸囬拡鐨勫紩鐢 int *&a 鎸囧悜 int 绫诲瀷鐨勬寚閽 鐨勫紩鐢 int &*a 鍙互瑙i噴涓猴紝int绫诲瀷寮曠敤 鐨勬寚閽堬紙C++涓嶅厑璁稿0鏄 鎸囧悜寮曠敤鐨勬寚閽堬級銆俢onst 鏄闄愬畾绗 const int a; //const 闄愬畾 int锛屽嵆 a 鏄竴涓彉閲忥紝绫诲瀷涓篿nt鐨勫父閲忋傦紙鎵浠ワ紝int甯搁噺涓嶅彲淇敼...
  • const淇グ鐨鎸囬拡浼氶澶栫殑鍗犲唴瀛樺悧?
    绛旓細浠嶇劧鏄4锛屼笉浼氬崰棰濆鐨勫唴瀛樸傚鏋滅‘瀹氫笉浼氫慨鏀圭殑璇濓紝鍔犱笂const鍙互闃叉琚淇敼锛岃繖鏍峰彲閬垮厤涓浜涢敊璇傝屼笖鏈夊埄浜庣紪璇戝櫒甯粍浼樺寲绋嬪簭
  • 濡傛澹版槑鏁扮粍姝g‘鍚?int n=10,a[n];
    绛旓細绌跺叾鍘熷洜锛岃澶у鍙傝冧笅闈㈡彁渚鐨刢onst闄愬畾绗︾殑鍏蜂綋鎰忎箟锛宑onst鍙槸闄愬畾璇ュ嚱鏁颁笉鍙淇敼銆傚苟涓嶆槸鐪熸鎰忎箟涓婄殑甯搁噺銆傚畯瀹氫箟涓嶅け涓轰竴绉嶆柟娉曘備笉鐒跺氨malloc銆乫ree鎴栬卬ew銆乨elete銆傝В璇村畬姣曘傚彟锛氬紩鐢ㄤ竴绡囨枃绔犻噷鐨勶細鍏抽敭瀛梒onst鏈変粈涔堝惈鎰忥紵鎴戝彧瑕佷竴鍚埌琚潰璇曡呰锛"const鎰忓懗鐫甯告暟"锛屾垜灏辩煡閬撴垜姝e湪鍜屼竴涓...
  • C++涓鐨刢onst鍑芥暟涓巆onst_cast鐨勭煕鐩
    绛旓細int main(){ const int k=10;int& x=const_cast<int>(k);x=11;return k;} 杩欐浠g爜涓嚭鐜扮殑灏辨槸鍏稿瀷鐨刢onst_cast鐨勬湭瀹氫箟琛屼负,return鐨勫兼槸瀹屽叏涓嶇‘瀹氱殑,鍏ㄧ湅缂栬瘧鍣 蹇冩儏.鑰屼互涓嬩唬鐮佹槸姝g‘鐨:int main(){ int k=10;const int& ref=k;int& x=const_cast<int>(ref);x=11;return ...
  • const char **p 銆 char *const *p 銆 char **const p鐨鍖哄埆?
    绛旓細const char *p;浠栫殑鎰忔濇槸p鎸囧悜鐨勭洰鏍囩┖闂寸殑鍐呭涓嶅彲鍙樺寲 char * const p;鏄〃鏄庢寚閽坧鐨勫间笉鍙彉,浣嗗畠鎸囧悜鐩爣鐨勫煎彲鍙 鑰宑har **鐨勭被鍨嬫槸鈥滄寚鍚慶har绫诲瀷鐨勬寚閽堢殑鎸囬拡锛坧oitter to poitter to char锛夈傗漜onst char **绫诲瀷涓嶆槸涓涓叿鏈夐檺瀹氱鐨勬寚閽堢被鍨嬶紝瀹冪殑绫诲瀷鏄滄寚鍚戞湁const闄愬畾绗︾殑char...
  • const char **p1; char **p2=NULL; p1 = p2;//閿欒,涓轰粈涔? const char...
    绛旓細涓銆乧onst char **p1; char **p2=NULL; p1 = p2;//閿欒,涓轰粈涔?鎴戜粠鍏跺畠缃戠珯涓婃煡鍒扮殑锛歝onst char **鏄竴涓病鏈夐檺瀹氱鐨勬寚閽堢被鍨嬶紝瀹冪殑绫诲瀷鏄滄寚鍚戞湁const闄愬畾绗︾殑char绫诲瀷鐨勬寚閽堢殑鎸囬拡鈥濄 鐢变簬char ** 鍜宑onst char ** 閮芥槸娌℃湁闄愬畾绗︾殑鎸囬拡绫诲瀷锛屼絾瀹冧滑鎵鎸囧悜鐨勭被鍨嬩笉涓鏍凤紙鍓嶈呮寚鍚...
  • C++,const_cast鐨鐢ㄦ硶
    绛旓細int *c = const_cast<int*>(&a);b = 987;c = 999;cout << "a="<<a<<endl;cout << "b="<<b<<endl;cout << "*c="<<*c<<endl;cout << "&a="<<&a<<endl;cout << "&b="<<&b<<endl;cout << "c="<<c<<endl;浣犲彲浠ユ寜鐓ф垜涓婇潰鐨勭▼搴忥紝鎵撳嚭鏉ョ湅鐪嬶紝鐮旂┒涓嬪摝锝...
  • 扩展阅读:c++中<< ... c++函数const ... c++关键字表 ... c++的关键字有哪些 ... c++ static ... c++中const的作用 ... c++中const用法 ... c++ virtual ... c++struct ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网