c++常量和常量表达式[通俗易懂](C++入门教程)
const,默認情況下僅在文件內有效
const int i(12);
const引用:對常量的引用不能被用作修改它所綁定的對象
const int ci(5);
const int &rci(ci);
rci = 90;//錯誤 不能修改
允許常量引用綁定到非常量的對象、字面值或表達式上
int i = 20;
const int &ri(20);
const int &ri3(i + ri);
常量引用僅對引用可參與的操作作出了限定,對于引用的對象本身未做限定
int i(10);
const int &c(i);
i = 90;//i不是常量,可以改變值
c = 20;//錯誤,c是一個常量引用,const限定了c為常量不能修改,i的修改與c的限定無關。
cout << c << endl;//值為90
//指針和const
int iv(10);
int iv1(23);
const int * pci1(&iv);//指向常量的指針,限定了該指針的操作,pci1的值可以改變,pcil指向的值不能變
pci1 = &iv1;
iv = 30;
int * const pci2(&iv);//常量指針,把指針本身定位常量,pci2的值不能改變,pci2指向的值可以改變
*pci2 = 90;
cout << *pci1 << endl;//23
cout << *pci2 << endl;//90
頂層和底層
頂層:表示指針本身是個常量
底層:指針所指的對象是常量
小技巧:const int * p: const修飾的是*p,也就是*p不能變。
int * const p: const修飾的是p,也就是p不能變。
字面值和constexpr
常量表達式:字面值是常量表達式,用常量表達式初始化的const對象也是常量表達式
const int ci = 20;//ci是常量表達式
const int cii = ci + 90;//cii是常量表達式
int iv = 30;//iv不是常量表達式
聲明為constexpr的變量一定是常量,而且必須用常量表達式初始化
constexpr int cif = 23;
constexpr聲明的指針,只對指針有效,與指針指向的對象無關
constexpr int cvi(12);//必須定義到函數體外部才能被cip使用
constexpr const int * cip(&cvi);
cout << *cip << endl;
總結
以上是生活随笔為你收集整理的c++常量和常量表达式[通俗易懂](C++入门教程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于 Orbeon form PE 版本
- 下一篇: Orbeon form PE 版本 dm