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