亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中的常對象與常對象成員詳解

2020-01-26 15:44:20
字體:
來源:轉載
供稿:網友

常對象

常對象必須在定義對象時就指定對象為常對象。

常對象中的數據成員為常變量且必須要有初始值,如

復制代碼 代碼如下:

Time const t1(12,34,36); //定義t1為常對象

這樣的話,在所有的場合中,對象t1中的所有數據成員的值都不能被修改。凡希望保證數據成員不被改變的對象,可以聲明為常對象。

定義常對象的一般形式為

類名    const    對象名(實參列表);

也可以把const寫在最左面

const    類名    對象名(實參列表);

二者等價

如果一個對象被聲明為常對象,則不能調用該對象的非const型的成員函數(除了由系統自動調用的隱式構造函數和析構函數)。

否則就會報錯

這樣做是為了方式非const型的成員函數修改常對象中的數據成員的值,因為const型的成員函數是不可以修改對象中的數據成員的值的(這個后面還會說到)。

那么,怎樣才能引用常變量中的數據成員呢?很簡單,我們只需要將該成員函數聲明稱const型的成員函數(常成員函數)即可。

復制代碼 代碼如下:

void Print() const;

常成員函數可以訪問常對象中的數據成員,但仍然不允許修改常對象中數據成員的值。

有時在編程時有要求,一定要修改常對象成員中的某個數據成員的值(例如類中有一個用于計數的變量count,其值應當不能變化),

對該數據成員聲明為mutable,如

復制代碼 代碼如下:

mutable int count;//定義一個在常對象中可以被改變的數據成員

把count聲明為可變的數據成員,這樣就可以用聲明為const的成員函數來修改它的值。

=========================一個簡單的示例程序1.1====================================

復制代碼 代碼如下:

#include<iostream>
using namespace std;
class Student
{
<span style="white-space:pre"> </span>public:
<span style="white-space:pre">  </span>Student(int n,float s):num(n),score(s){}
<span style="white-space:pre">  </span>void change(int n,float s) const{num=n;score=s;}
<span style="white-space:pre">  </span>void display() const{cout<<num<<"/t"<<score<<endl;}
<span style="white-space:pre"> </span>private:
<span style="white-space:pre">  </span>mutable int num;
<span style="white-space:pre">  </span>mutable float score;
} ;
int main()
{
<span style="white-space:pre"> </span>Student const stud(101,78.5);
<span style="white-space:pre"> </span>stud.display();
<span style="white-space:pre"> </span>stud.change(101,80.5);
<span style="white-space:pre"> </span>stud.display();
<span style="white-space:pre"> </span>return 0;
};



我們定義了常對象stud,然后分別調用了兩個常函數display()和change(),但是在change函數中要修改常對象中的num和score的值,所以我們將num和score定義為mutable.
常對象成員

1.常數據成員
其作用和用法與一般常變量相似,用關鍵字const來聲明常數據成員。常數據成員的值是不能改變的。
只能通過構造函數的參數初始化表對常數據成員進行初始化。

在類體中聲明常數據成員

復制代碼 代碼如下:

const int num;//聲明hour為常數據成員

在類外定義構造函數
復制代碼 代碼如下:

Student::Student(int n,float s):num(n),score(s){} //通過參數初始化表對常數據成員num和score初始化

在類體中聲明了某一個數據成員為常數據成員后,該類所有對象中的該數據成員的值都是不能改變的,但不同對象中該變量成員的值可以是不同的(分別在初始化時指定)。

2.常成員函數

如果將成員函數聲明為常成員函數,則只能引用本類中的數據成員,而不能修改它們。
注意:常對象只能引用常成員函數

常成員函數的定義形式:

復制代碼 代碼如下:

void Print() const;//注意const的位置在函數名和括號之后

const是函數類型的一部分,在聲明函數和定義函數都要有const關鍵字,在調用時不必加const。

常成員函數可以const數據成員,也可以引用非const數據成員,但是都不能修改他們;

不是常成員函數的函數可以調用const數據成員,但是不能修改它們,也可以調用非const數據成員,并且可以修改它們。

具體情況,如圖1:

還要注意一下三點:
1.不要誤認為常對象中的成員函數都是常成員函數,常對象只保證其所有數據成員的值不被修改。

2.如果在常對象中的成員函數未加const聲明,則編譯系統會把它當最非const成員函數處理。

3.還要注意,常成員函數不能調用另外一個非cosnt成員函數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品高潮粉嫩av| 欧美黄网免费在线观看| 精品成人av一区| 久久久精品一区二区三区| 91久久久国产精品| 欧美日韩中文字幕综合视频| 国产精品美女久久久免费| 8050国产精品久久久久久| 国产精品va在线播放| 成人欧美一区二区三区黑人| 欧美午夜视频在线观看| 九九综合九九综合| 亚洲人成网站999久久久综合| 欧美亚洲另类制服自拍| 成人黄色午夜影院| 国产视频精品va久久久久久| 色悠悠国产精品| 日韩视频在线观看免费| 精品成人久久av| 亚洲精品动漫100p| 欧美激情乱人伦一区| 国产精品久久久久久久av大片| 国产成+人+综合+亚洲欧美丁香花| 91亚洲va在线va天堂va国| 日韩欧美在线视频日韩欧美在线视频| 亚洲一区中文字幕在线观看| 精品成人国产在线观看男人呻吟| 欧美中文字幕在线视频| 久久久这里只有精品视频| 国产亚洲精品一区二区| 91精品国产免费久久久久久| 欧美日韩亚洲精品内裤| 国产成人极品视频| 91在线视频九色| 欧美激情极品视频| 国产97在线播放| 亚洲福利视频专区| 亚洲欧美日韩中文视频| 不卡av电影在线观看| 精品视频www| 国产精品一区二区女厕厕| 成人黄在线观看| 亚洲精品mp4| 中文字幕亚洲国产| 亚洲人成在线一二| 中文字幕欧美日韩精品| 97久久精品国产| 91精品国产高清久久久久久| 日韩在线免费高清视频| 亚洲性视频网址| 国产精品久久久久久久久久久久久久| 日韩精品亚洲视频| 欧美日韩一二三四五区| 2019国产精品自在线拍国产不卡| 亚洲va欧美va国产综合久久| 国产免费一区二区三区香蕉精| 国产激情综合五月久久| 2020久久国产精品| 久久激情视频久久| www国产91| 国产精品高精视频免费| 国产成人精品免费久久久久| 色爱精品视频一区| 国产精品狼人色视频一区| 97精品国产97久久久久久免费| 亚洲美女中文字幕| 亚洲欧洲在线免费| 91手机视频在线观看| 永久免费看mv网站入口亚洲| 北条麻妃久久精品| 亚洲热线99精品视频| 欧美日韩在线免费| 欧美视频在线看| 91精品久久久久久久久| 成人国产精品日本在线| 欧美日韩中国免费专区在线看| 中文字幕不卡在线视频极品| 精品香蕉一区二区三区| 欧美亚洲第一页| 国产精品一区专区欧美日韩| 欧美又大粗又爽又黄大片视频| 亚洲精品电影网在线观看| 精品五月天久久| 日韩精品视频在线观看网址| 奇米成人av国产一区二区三区| 伊人精品在线观看| 久久99久国产精品黄毛片入口| 欧美与欧洲交xxxx免费观看| 国产精品久久久久av| 欧美激情区在线播放| 亚洲一区二区久久| 26uuu久久噜噜噜噜| 亚洲一区二区三区乱码aⅴ| 欧美日韩在线免费观看| 欧美亚洲国产视频| 亚洲欧美激情四射在线日| 91tv亚洲精品香蕉国产一区7ujn| 热re91久久精品国99热蜜臀| 91高清视频在线免费观看| 中文字幕亚洲欧美日韩在线不卡| 欧美高清不卡在线| 亚洲一区二区三区四区在线播放| 国产精品爱久久久久久久| 91精品综合久久久久久五月天| 免费不卡欧美自拍视频| 久久久精品免费| 久久久久久久久久久免费精品| 亚洲精品理论电影| 国产成人精品av| 777精品视频| 国产成人高清激情视频在线观看| 国产精品视频在线播放| 国产在线视频欧美| 亚洲色图美腿丝袜| 欧美疯狂xxxx大交乱88av| 色吧影院999| 日本久久久久亚洲中字幕| 久久综合88中文色鬼| 中文字幕亚洲情99在线| 国产91精品久久久久久久| 欧美日韩国产一区二区三区| 国产精品三级美女白浆呻吟| 久久久久999| 国产欧美一区二区三区视频| 国产精品久久久久久久久久久新郎| 日韩电影免费在线观看中文字幕| 亚洲男人第一av网站| 97超碰蝌蚪网人人做人人爽| 992tv成人免费影院| 精品国内产的精品视频在线观看| 性色av一区二区三区在线观看| 国产成人精品午夜| 中文字幕国内精品| 午夜欧美不卡精品aaaaa| 91爱视频在线| 91精品国产综合久久香蕉的用户体验| 日韩av有码在线| 欧美视频中文字幕在线| 日韩av电影在线网| 国产日韩一区在线| 国产精品成熟老女人| 国产视频精品免费播放| 久久精品成人一区二区三区| 国产一区二区动漫| 另类专区欧美制服同性| 日韩av在线免费播放| 社区色欧美激情 | 国产精品日韩在线一区| 欧洲成人免费aa| 亚洲一区999| 成人久久精品视频| 91精品久久久久久久久中文字幕| 亚洲一区二区久久久久久久| 一区二区三区视频观看| 91久久在线观看| 久久精品最新地址| 欧美日韩激情网| 国产成人在线一区| 日韩精品极品视频免费观看| 久久理论片午夜琪琪电影网| 日韩久久免费视频| 日韩av在线一区二区| 精品一区二区三区三区| 国产亚洲福利一区|