C const和static修飾成員的情況

2021-10-06 05:37:31 字數 2651 閱讀 2406

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 是...