1、const修飾成員變數
class
test
private
:const
int ma;
//宣告常成員變數
int mb;};
intmain()
2、const修飾物件
class
test
void
show()
private
:int ma;
//宣告常成員變數
物件中的成員是不可修改的
3、const修飾常函式
我們將test test(10,20);
改為const test test(10,20);
,此時的const修飾的就是乙個常物件,然後常物件呼叫show函式,我們發現呼叫失敗:
程式出錯的原因:
test test(10
,20);
test.
show()
;
這兩步現在就相當於:
const test test(10
,20);
test const
this
=&test;
第一句的const修飾的是test,間接訪問也就是*this
第二局的const修飾的是this
這樣就會有間接訪問修改常量的風險
可以改為:
const test test(10
,20);
const test const
this
=&test;
在**中的修改為:在函式的原型後面加const
void
show()
const
這樣程式就是正確的:
const修飾常函式就是修飾函式內部的this指標,也就是將type* const this
轉變為const type* const this
常物件是不能呼叫普通方法
常物件只能呼叫常方法
1、static修飾變數
普通的成員變數是屬於物件
靜態成員變數不屬於物件所有物件共享
靜態的成員變數不依賴物件訪問
一定要在類外初始化
class
test
private
:static
int ma;
//宣告常成員變數
int mb;};
int test::ma =10;
//靜態成員變數的初始化方式
intmain()
類外實現成員方法
2、static修飾成員方法
靜態的成員方法是_cdecl呼叫約定,沒有this指標
靜態的成員方法可以訪問靜態的成員變數
int gdata =10;
class
test
private
:static
int ma;
int mb;
int mc;};
test::
test
(int b,
int c):mb
(b),
mc(c)
int test::ma =10;
intmain()
靜態的成員方法不能呼叫普通的成員方法
普通的成員方法可以呼叫靜態的成員方法
int gdata =10;
class
test
void
print()
private
:static
int ma;
int mb;
int mc;};
test::
test
(int b,
int c):mb
(b),
mc(c)
int test::ma =10;
intmain()
C const修飾引用和指標
測試 void constbeforefunction const double x,const std array d condition,const std array s condition 以下報錯 x 1.0 d condition at 0 1 d condition at 1 2 d ...
C const修飾符和指標
c const修飾符和指標 開發工具與關鍵技術 c visualstudioconst修飾符,是用來修飾變數,被const修飾符,修飾過的變數,就叫做常量,常量是一種只能被讀取,不能被修改的量。在c 宣告乙個常量時,不但要const修飾符還有在宣告時就要給它進行初始化,你不給它初始化,編譯器就會報錯...
C const修飾的是誰?
實驗 如下 class test void var int a,int b const const修飾的this指標。var const test this,int a,int b private int a int b int main 說明 上面的 this a 100 this b 188 是...