const类型成员函数与mutable
const類型成員函數(shù)與mutable
原文:http://houhualiang.i.sohu.com/blog/view/42619368.htm
| ? | const類型的成員函數(shù)是指使用const關(guān)鍵字進(jìn)行修飾的類的成員函數(shù)。const類型的成員函數(shù)對函數(shù)內(nèi)部的操作加以一定的限制,比如不可以對對象的屬性進(jìn)行修改等,這樣可以提高程序代碼的正確性。 在使用關(guān)鍵字const對成員函數(shù)修飾的時(shí)候,將const放在成員函數(shù)的后面。在定義對象的時(shí)候,可以使用關(guān)鍵字const聲明對象為常量對象。對于常量對象,如果使用非常量成員函數(shù)來操作,則會出現(xiàn)一個(gè)編譯錯(cuò)誤;同樣,對于使用關(guān)鍵字volatile聲明的對象, 如果使用非volatile類型的成員函數(shù)來操作,也會出現(xiàn)一個(gè)編譯錯(cuò)誤。 如果想修改const類型對象的成員變量,可以使用關(guān)鍵字mutable對該成員變量進(jìn)行修飾。 1 #include <iostream.h> 2 #include <conio.h> 3 class CDate 4 { 5 public: 6 int year; 7 mutable int month; // 使用關(guān)鍵字mutable進(jìn)行修飾 8 CDate(int y=2000,int m=1) 9 { 10 year= y; 11 month= m; 12 }; 13 int GetMonth() const; // 一個(gè)只讀函數(shù) 14 void SetMonth( int m ); // 一個(gè)寫函數(shù) 15 }; 16 int CDate::GetMonth() const 17 { 18 // 下面一行錯(cuò)誤,故屏蔽掉 19 // year++; // 但如果是month+ + ;則沒問題 20 return month; // 在只讀函數(shù)中不可以進(jìn)行改寫操作 21 } 22 void CDate::SetMonth(int m) 23 { 24 month = m; // 設(shè)置月份 25 } 26 void main() 27 { 28 CDate d1; 29 d1.Setmonth(9); 30 d1.year=1975 ; 31 cout<<"d1:"<<d1.year<<"年"<<d1.Getmonth()<<"月\n"; 32 const CDate d2; 33 d2.month=7; 34 cout<<"d2:"<<d2.year<<"年"<<d2.Getmonth()<<"月\n"; 35 // 下面一句錯(cuò)誤,故屏蔽掉 36 // d2.SetMonth(7); // 不可以對常量對象調(diào)用非常量成員函數(shù) 37 // 下面一句錯(cuò)誤,故屏蔽掉 38 // d2.year=1973; // 不可以修改常量對象的成員變量 39 }運(yùn)行結(jié)果: |
轉(zhuǎn)載于:https://www.cnblogs.com/lx09110718/p/constmutable.html
總結(jié)
以上是生活随笔為你收集整理的const类型成员函数与mutable的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOUtils工具类的依赖maven
- 下一篇: (jquery插件)打造百分比动态色彩条