C++ 中 const和define的区别
生活随笔
收集整理的這篇文章主要介紹了
C++ 中 const和define的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
來源網(wǎng)址:http://wujiangping.blog.163.com/blog/static/195182011201255115125205/
請區(qū)別用#define命令定義的符號常量和用const定義的常變量。符號常量只是用一個符號代替一個字符串,在預(yù)編譯時把所有符號常量替換所指定的字符串,它沒有類型,在內(nèi)存中并不存在以符號常量命名的存儲單元。而常變量具有變量的特征,它具有類型,在內(nèi)存中存在著以它命名的存儲單元,可以用sizeof運算符測出其長度。與一般變量惟一的不同是指定變量的值不能改變。用#define命令定義符號常量是C語言所采用的方法,C++把它保留下來是為了和C兼容。C++的程序員一般喜歡用const定義常變量。雖然二者實現(xiàn)的方法不同,但從使用的角度看,可以認(rèn)為用了一個標(biāo)識符代表了一個常量。有些書上把用const定義的常變量也稱為定義常量,但應(yīng)該了解它和符號常量的區(qū)別。
const的用法
??1、C程序中的作用 ? ??定義常量、修飾函數(shù)參數(shù)、修飾函數(shù)返回值 2、C++程序中特有的作用 ? ? ? ??修飾函數(shù)的定義體;定義類中某個成員函數(shù)為恒態(tài)函數(shù)即不可改變類中的數(shù)據(jù)成員; const和define的區(qū)別 ??C++中const和define都可以定義常量,但是const有更多優(yōu)點 (1)const常量有數(shù)據(jù)類型,而宏常量沒有,編譯器可以對const常量進(jìn)行類型安全檢查,而后者只進(jìn)行字符替換沒有安全檢查,可能生意料不到的錯誤(邊際效應(yīng)) (2)有些集成化的調(diào)試工具可以對const常量進(jìn)行調(diào)試,但是不能對宏常量進(jìn)行調(diào)試,c++中使用const常量而不是宏常量,即const常量完全取代宏常量。 (3)const與#define最大的差別在于: 前者在堆棧分配了空間,而后者只是把具體數(shù)值直接傳遞到目標(biāo)變量罷了。或者說,const的常量是一個Run-Time的概念,他在程序中確確實實的存在并可以被調(diào)用、傳遞。而#define常量則是一個Compile-Time概念,它的生命周期止于編譯期:在實際程序中他只是一個常數(shù)、一個命令中的參數(shù),沒有實際的存在。?const常量存在于程序的數(shù)據(jù)段,#define常量存在于程序的代碼段。
轉(zhuǎn)載于:https://www.cnblogs.com/tianxia2s/p/3858285.html
總結(jié)
以上是生活随笔為你收集整理的C++ 中 const和define的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公司的实战Replica Sets+Sh
- 下一篇: C++中的空类与空结构体大小