C++ 之常对象,常对象成员
一.常對(duì)象:
1.常對(duì)象定義:Time? const? t1(1,2,3)或者const Time t1;
2.常對(duì)象不能調(diào)用該對(duì)象的非const型的成員函數(shù)(系統(tǒng)主動(dòng)調(diào)用的構(gòu)造析構(gòu)函數(shù)除外);
3.常成員函數(shù)的聲明方法,后面加個(gè)const即可: void get_time() const;
4.常對(duì)象不能修改對(duì)象內(nèi)的數(shù)據(jù)成員,如果要修改,只能將數(shù)據(jù)成員聲明為mutable:
? ?mutable int count;
? ?這樣就可以用聲明為const的成員函數(shù)來(lái)修改它的值;
二.常數(shù)據(jù)成員:
1.常數(shù)據(jù)成員的定義:const? int? a;?或者 int? const? a;
2.只能通過(guò)構(gòu)造函數(shù)的參數(shù)初始化表對(duì)常數(shù)據(jù)成員進(jìn)行初始化,不能采用在構(gòu)造函數(shù)中對(duì)常數(shù)據(jù)成員賦初值的方法;
class Time {public:Time(int h, int t);const int hour;int test; };錯(cuò)誤構(gòu)造函數(shù): Time::Time(int h, int t) {hour = h; // hour是常數(shù)據(jù)成員,非法test = t; }正確方案: Time::Time(int h):hour(h) // 采用部分初始化列表定義常數(shù)據(jù)成員,正確 {test = t; } 或者 Time::Time(int h):hour(h),tset(t){} // 采用全部初始化列表定義三.常成員函數(shù):
1.常成員函數(shù)不能調(diào)用另一個(gè)非const成員函數(shù);
2.常成員函數(shù)調(diào)用數(shù)據(jù)成員情況:
| ? ? ? ? ? ? ? ? ? ?數(shù)據(jù)成員 | ? ? ? ? ? ? ? ? ? ? ?非const成員函數(shù) | ? ? ? ? ? ? ? ? ? ? ? ? ? ?const成員函數(shù) |
| 非const的數(shù)據(jù)成員 | 可以引用,也可以改變值 | 可以引用,但不可以改變值 |
| const數(shù)據(jù)成員 | 可以引用,但不可以改變值 | 可以引用,但不可以改變值 |
| const對(duì)象的數(shù)據(jù)成員 | 不允許引用和改變值 | 可以引用,但不可以改變值 |
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的C++ 之常对象,常对象成员的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++之指向对象成员函数的指针
- 下一篇: C++ 之类的静态成员