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