類中的屬性和方法被const修飾

2021-08-24 23:29:06 字數 1541 閱讀 7198

#include 

using

namespace

std;

struct a

};int main();

a a2 = ;

a1.f(); //改變物件a1的屬性

a2.f(); //改變物件a2的屬性

在這種情況下,物件的屬性很容易被改變,如果這時我不想某一物件中的屬性時,這時可用const修飾該物件,如:

#include 

using

namespace

std;

struct a

};int main(); //用const修飾物件a1,說明a1是個常量物件,屬性不允許被修改

a a2 = ; //非常量物件

a1.f(); //產生編譯錯誤,a1為常量物件,其屬性不允許被修改

a2.f(); //合法

}

值得注意的是,被const修飾的物件不能呼叫類中沒有被const修飾的方法,例如上面的物件a1不能呼叫方法f,但可以呼叫被const修飾的方法。但是沒有被const修飾的物件是可以呼叫被const修飾的方法的,例如下面的程式:

#include 

using

namespace

std;

struct a

};int main(); //被const修飾的物件a1

a a2 = ; //未被const修飾的物件a2

a1.f(); //合法,因為方法f也被const修飾

a2.f(); //合法,雖然a2未被const修飾,但也可以呼叫被const修飾的方法

}

輸出結果:

一旦類中的方法被const修飾了,則意味著該方法為常量,方法中不得有修改類中屬性的語句存在,例如:

struct a

};

同樣地,被const修飾的方法也不允許呼叫其他能夠修改類中屬性的其他方法,例如:

struct a

void f() const

一般地,在一些類的方法中,如果需要將屬性作為返回值的,或者需要以文字形式輸出的方法都會用const修飾,如下面的程式:

#include using namespace std;

class complex

int getreal() const

int getimag() const

void text() const { //以文字形式輸出,也用const修飾

cout << "this complex number is : << re << " + " << im << "j" <

有關類的const 屬性

const關鍵字能夠修飾物件,但是修飾物件的成員變數 不允許被改變 通過物件建構函式初始化的不算 另外這個唯讀變數只是編譯階段的概念 執行的時候 還是有辦法改變的 include class test test test int i test test const test t int test g...

類中屬性和方法的定義和使用

1.1 在類中宣告屬性 語法 修飾符 型別 變數名 修飾符 型別 變數名 值 eg private string name 小明 public int age protected boolean isonline 修飾符 public 公有的,都可以訪問 protected 保護 只有子類能訪問 p...

python中類的屬性和方法介紹

python 類屬性,例項屬性,類方法,靜態方法,例項方法 類屬性和例項屬性 coding utf 8 class student object name i am a class variable 類變數 s student 建立例項s print s.name 列印name屬性,因為例項並沒有n...