C++中const关键字作用有哪些 c++中const的作用

c++\u4e2dconst\u7684\u4f5c\u7528\u662f\u4ec0\u4e48\uff1f

CONST\uff1a\u4e00\u4e2aC\u8bed\u8a00\u7684\u5173\u952e\u5b57

CONST\uff1a\u4e00\u4e2aC\u8bed\u8a00\u7684\u5173\u952e\u5b57

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。

const关键字的作用主要有以下几点:

(1)可以定义const常量,具有不可变性。 例如:

const int Max=100; int Array[Max];


(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:

 void f(const int i) { .........}

编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(5) 为函数重载提供了一个参考。

class A { ...... 
void f(int i) {......} //一个函数 
void f(int i) const {......} //上一个函数的重载 ...... 
};


(6) 可以节省空间,避免不必要的内存分配。 例如:

#define PI 3.14159 //常量宏 
const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ...... 
double i=Pi; //此时为Pi分配内存,以后不再分配! 
double I=PI; //编译期间进行宏替换,分配内存 
double j=Pi; //没有内存分配 
double J=PI; //再进行宏替换,又一次分配内存!


const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
(7) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。



// 1.修饰变量,表示变量是常量,不希望改变其值
const int a = 10;
// 2.修饰变通函数参数,表示此参数是传入参数,不希望在函数内改变其值,参数类型常为指针或引用
void foo(const int * p, const int &ref);
// 3.修饰函数返回类型,表示函数返回的是常量
const int foo();
// 4.用于类成员函数声明之后,表示该成员函数不会改变类的属性
class Test{
public:
    ...
    void foo() const;
    ...
};
// 5.用于类特定成员函数参数,通常为拷贝构造函数等
class Test{
public:
    Test(const Test &other);
    Test operator = (const Test &other);
    ...
};
// 6.修饰指针
const int a = 10;
int b = 20;
const int * p = &a;  // 此时p为指向a的指针,a值不可修改,但p可以修改为b的地址

const int * const p = &a;  // 此时a的值不可修改,p的指向也不可修改
// 可能还有其他作用,暂时就想到这些


CONST:一个C语言的关键字



  • const鍦c璇█涓殑鐢ㄦ硶
    绛旓細1.const鏄疌璇█涓殑鍏抽敭瀛楋紝涓昏浣滅敤鏄檺瀹氫竴涓彉閲忎笉鍏佽琚敼鍙橈紝浜х敓闈欐佷綔鐢銆備娇鐢╟onst鍦ㄤ竴瀹氱▼搴︿笂鍙互鎻愰珮绋嬪簭鐨勫畨鍏ㄦу拰鍙潬鎬с傞櫎浜嗗父瑙勭殑瀹氫箟甯搁噺澶栵紝const杩樺彲浠ヤ慨楗板眬閮ㄥ彉閲忋佸叏灞鍙橀噺銆佸彉閲忔寚閽堜互鍙婁綔涓哄嚱鏁板弬鏁 2.鍦–璇█涓紝const鏈甯歌鐨勭敤娉曟槸浣滀负鏁扮粍鐨勮竟鐣屽拰switch鍒嗘儏鍐垫爣鍙凤紝鍚屾椂涔熷彲浠ュ畾...
  • C璇█涓璫onst鏈浠涔鐢ㄩ
    绛旓細锛2锛変究浜庤繘琛岀被鍨嬫鏌ワ紝浣跨紪璇戝櫒瀵瑰鐞嗗唴瀹规湁鏇村浜嗚В锛屾秷闄や簡涓浜涢殣鎮銆備緥濡傦細 void f(const int i) { ...} 缂栬瘧鍣ㄥ氨浼氱煡閬搃鏄竴涓父閲忥紝涓嶅厑璁镐慨鏀癸紱锛3锛鍙互閬垮厤鎰忎箟妯$硦鐨勬暟瀛楀嚭鐜锛屽悓鏍峰彲浠ュ緢鏂逛究鍦拌繘琛屽弬鏁扮殑璋冩暣鍜屼慨鏀广傦紙4锛夊彲浠ヤ繚鎶よ淇グ鐨勪笢瑗匡紝闃叉鎰忓鐨勪慨鏀癸紝澧炲己绋嬪簭鐨勫仴澹銆傦紙6...
  • C璇█涓璫onst鏈浠涔鐢ㄩ
    绛旓細锛2锛変究浜庤繘琛岀被鍨嬫鏌ワ紝浣跨紪璇戝櫒瀵瑰鐞嗗唴瀹规湁鏇村浜嗚В锛屾秷闄や簡涓浜涢殣鎮銆備緥濡傦細 void f(const int i) { ...} 缂栬瘧鍣ㄥ氨浼氱煡閬搃鏄竴涓父閲忥紝涓嶅厑璁镐慨鏀癸紱锛3锛鍙互閬垮厤鎰忎箟妯$硦鐨勬暟瀛楀嚭鐜锛屽悓鏍峰彲浠ュ緢鏂逛究鍦拌繘琛屽弬鏁扮殑璋冩暣鍜屼慨鏀广傦紙4锛夊彲浠ヤ繚鎶よ淇グ鐨勪笢瑗匡紝闃叉鎰忓鐨勪慨鏀癸紝澧炲己绋嬪簭鐨勫仴澹銆 杩...
  • c璇█const鏄粈涔堟剰鎬
    绛旓細鍦–璇█涓紝const鏄竴涓叧閿瓧锛琛ㄧず甯搁噺鐨勬剰鎬銆傛湰璐ㄤ笂锛宑onst鏄敤浜庨檺鍒朵竴涓彉閲忕殑鍊间笉鍙洿鏀圭殑銆傚湪瀹氫箟鍙橀噺鏃讹紝鍙互浣跨敤const鍏抽敭瀛楀皢鍏跺畾涔変负甯搁噺锛屼竴鏃﹀畾涔夊畬鎴愪箣鍚庯紝渚挎棤娉曚慨鏀瑰叾鍊笺傝繖绉嶅仛娉曞彲浠ラ伩鍏嶅洜鎰忓閿欒鑰屼慨鏀逛簡鍙橀噺鐨勫硷紝浠庤屽鑷寸▼搴忓嚭鐜颁笉鍙鏈熺殑缁撴灉銆俢onst杩欎釜鍏抽敭瀛楀湪C璇█涓捣鍒扮殑浣...
  • c涓璫onst 浣滅敤
    绛旓細const鏄竴涓狢璇█鐨勫叧閿瓧锛瀹冮檺瀹氫竴涓彉閲忎笉鍏佽琚敼鍙,鍙互鎻愰珮浠g爜鐨勫彲闈犳銆俢onst int a=100; b鐨勫唴瀹逛笉鍙,b鍙兘鏄100涔熷氨鏄0鏄庝竴涓猧nt绫诲瀷鐨勫父閲(#define b =100)int const b=100; //鍜屼笂闈綔鐢ㄤ竴鏍 const鎸囬拡鍜屽紩鐢ㄤ竴鑸敤鍦ㄥ嚱鏁扮殑鍙傛暟涓 int* m = &a; //鍑洪敊,甯搁噺鍙兘鐢ㄥ父鎸囬拡 i...
  • c++涓璫onst鐨勪綔鐢鏄粈涔?
    绛旓細const鍏抽敭瀛鑷冲皯鏈変笅鍒梟涓浣滅敤锛氾紙1锛夋闃绘涓涓彉閲忚鏀瑰彉锛屽彲浠ヤ娇鐢╟onst鍏抽敭瀛椼傚湪瀹氫箟璇onst鍙橀噺鏃讹紝閫氬父闇瑕佸瀹冭繘琛屽垵濮嬪寲锛屽洜涓轰互鍚庡氨娌℃湁鏈轰細鍐嶅幓鏀瑰彉瀹冧簡锛涳紙2锛夊鎸囬拡鏉ヨ锛屽彲浠ユ寚瀹氭寚閽堟湰韬负const锛屼篃鍙互鎸囧畾鎸囬拡鎵鎸囩殑鏁版嵁涓篶onst锛屾垨浜岃呭悓鏃舵寚瀹氫负const锛涳紙3锛夊湪涓涓嚱鏁板0鏄庝腑锛宑onst...
  • C璇█涓璫onst鏄粈涔堟剰鎬濄傘傘
    绛旓細缁撹鏄紝C璇█涓殑const鍏抽敭瀛楁湁鐫娣辫繙鐨勫垵琛凤紝鏃ㄥ湪浼樺寲骞剁户鎵块缂栬瘧鎸囦护鐨勪紭鐐癸紝鍚屾椂瑙e喅鍏剁己鐐广俢onst鐨勭伒娲绘т綋鐜板湪瀹冨湪涓嶅悓鍦哄悎涓嬬殑澶氱搴旂敤锛屾棤璁烘槸淇グ鏅氬彉閲忚繕鏄寚閽堬紝閮藉叿鏈変笉鍚岀殑绾︽潫鍜屽惈涔夈傚綋const鐢ㄤ簬淇グ鏅氬彉閲忥紙闄ゆ寚閽堝锛夋椂锛'const type name'鍜'type const name'褰㈠紡绛夋晥锛岃〃绀哄彉閲...
  • const鍦c璇█涓殑鐢ㄦ硶
    绛旓細const鏄竴涓C璇█锛圓NSI C锛鐨勫叧閿瓧锛屽叿鏈夌潃涓捐冻杞婚噸鐨勫湴浣嶃備娇鐢╟onst鍦ㄤ竴瀹氱▼搴︿笂鍙互鎻愰珮绋嬪簭鐨勫畨鍏ㄦу拰鍙潬鎬э紝鍙﹀鍦ㄨ鐪嬪埆浜轰唬鐮佺殑鏃跺欙紝娓呮櫚鐞嗚Вconst鎵璧鐨勪綔鐢锛屽鐞嗚В瀵规柟鐨勭▼搴忎篃鏈変竴瀹氬府鍔┿俢onst鍦ㄥ叾瀹冪紪绋嬭瑷涓篃鏈夊嚭鐜帮紝渚嬪Pascal銆丆++銆丳HP5銆丅#.net銆丠C08 C銆丆#绛夈俢onst淇グ鐨勬暟鎹...
  • const鍦C璇█涓湁鍝簺鐢ㄦ硶?
    绛旓細const鏄竴涓狢璇█鐨勫叧閿瓧锛屽畠闄愬畾涓涓彉閲忎笉鍏佽琚敼鍙樸備娇鐢╟onst鍦ㄤ竴瀹氱▼搴︿笂鍙互鎻愰珮绋嬪簭鐨勫畨鍏ㄦу拰鍙潬鎬с傚彟澶栵紝鍦ㄨ鐪嬪埆浜轰唬鐮佺殑鏃跺欙紝娓呮櫚鐞嗚Вconst鎵璧鐨勪綔鐢锛屽鐞嗚В瀵规柟鐨勭▼搴忎篃鏈変竴浜涘府鍔┿傚彟澶CONST鍦ㄥ叾浠栫紪绋嬭瑷涓篃鏈夊嚭鐜帮紝濡侰++銆丳HP5銆丆#.net銆丠C08 C銆(1)鍙互瀹氫箟const甯搁噺锛屽叿鏈変笉鍙...
  • 缂栫▼璇█涓璫onst鏄粈涔堟剰鎬,鐢ㄦ潵骞蹭粈涔堢殑,鎬庝箞鐢(璇硶),閫傜敤浜庡摢鍑...
    绛旓細浠鐨勪綔鐢锛1.鍙互瀹氫箟const甯搁噺 2.const鍙互淇グ鍑芥暟鐨勫弬鏁帮紝杩斿洖鍊硷紝鐢氳嚦鍑芥暟鐨勫畾涔変綋銆傝const淇グ鐨勪笢瑗块兘鍙楀埌寮哄埗淇濇姢锛屽彲浠ラ闃叉剰澶栫殑鍙樺姩锛屼粠闈㈡彁楂樼▼搴忕殑鍋ュ.鎬с傛瘮濡傦細c璇█鏍囧噯搴撳嚱鏁皊trcpy 浠栫殑鍘熷瀷锛氬師鍨嬪0鏄庯細extern char *strcpy(char dest[],const char *src);杩欏効涓嚱鏁扮浜屼釜鍙傛暟鏄緭鍏...
  • 扩展阅读:c++关键字表 ... c++和python先学哪个 ... c++中<< ... c++编程 ... c++教程 ... 在c++中const是什么意思 ... c++关键字大全 ... c++的关键字有哪些 ... const关键字及其作用 用法 ...

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