日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象程序中的常量

發布時間:2025/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象程序中的常量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、常數據成員?

????使用constkeyword進行說明的數據成員,稱為常數據成員。其作用和使用方法與一般常變量(const變量)相似,但常數據成員的值是不能改變的。

注意:僅僅能通過構造函數的參數初始化表對常數據成員進行初始化,不能採用在構造函數中對常數據成員賦初值的方法。

比如:

????如在類體中定義了常數據成員age:

?????????const?int?age;????//聲明age為常數據成員

????在類外定義構造函數,應寫成下面形式:?

??????????CStudent∷Cstudent(int?a):age?(a){……}//通過參數初始化表對常數據成員age初始化。

??????????CStudent∷Cstudent(int?a){age=a;}?????//錯誤,不能在函數體中初始化常數據成員。

注:為了與長對象進行差別,特別強調常數據成員能夠被非const和const類型函數僅僅讀。

二、常對象

1、定義

常對象:對象的全部成員在程序中不能被改動,數據初始化后即為僅僅讀模式。???

?

2、定義常對象的一般形式為

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

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

比如:一個日期對象始終表示2000年5月1號,能夠定義為:

??????Cdate?const?d1(2000,5,1);????????//d1是常對象

3、注意

以Cdate類為例,該類的定義例如以下:

<pre name="code" class="cpp">#include "stdafx.h" #include <iostream> #include <string> #include <stdio.h> using namespace std;//日期類聲明 class Cdate { public:Cdate(int y=1985, int m=1,int d=1) //日期類的構造函數{ year=y;month=m;day=d;cout<<"調用日期類的構造函數"<<endl;}Cdate(Cdate &s) //日期類的拷貝構造函數{ year=s.year;month=s.month;day=s.day;cout<<"調獺用日期類的拷貝構造函數"<<endl;}~ Cdate(){ cout<<"調用日期類的析構函數"<<endl;}void Print(){cout<<"調用Print()函數:"<<endl;cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;} private:int year,month ,day; //定義3個整型變量,分別表括示日期的年月日 };int _tmain(int argc, _TCHAR* argv[]) {Cdate d1(2001,5,1); d1.Print();system("pause");return 0; }

1)常對象在定義時必需要有初值,通過帶參數的構造函數或構造函數的參數初始化表進行初始化。

????Cdate?d1(2000,5,1);??????????//一般對象

????Cdate?const?d2?;?????????????//?d2是常對象

?d2=d1;???????????//錯誤,常對象必須在定義的時候賦初值

2)常對象僅僅能以僅僅讀的方式訪問常成員函數,而不能訪問很成員函數。

假設希望成員函數可引用常對象中的數據成員,僅僅需將該成員函數聲明為const就可以。

聲明格式:返回值類型?函數名()?const?

注意const修飾符的位置在最后面,且構造析構函數不用const修飾!

???比如:

? const?Cdate?d1(2000,5,1);??????????//一般對象

d1.Print();

則會報出例如以下錯誤:error?C2662:?“°Cdate::Print”:?不能將“this”指針從“const?Cdate”轉換為“Cdate?&”

????改為:void?print()?const;???????//將函數聲明為const,即常成員函數。

常成員函數能夠訪問常對象中的數據成員,但仍然不同意改動常對象中數據成員的值。

三、常成員函數

使用constkeyword進行說明的成員函數,稱為常成員函數。常成員函數僅僅能讀取本類中的數據成員(非const數據成員和const數據成員),而不能改動它們的值。非const成員函數能夠引用?const數據成員。

常成員函數說明格式例如以下:

類型標識符??函數名??(?參數表?)?const;

常量的應用:

1)?假設在一個類中,有些數據成員的值同意改變,還有一些數據成員的值不同意改變,則能夠將一部分數據成員聲明為const,以保證其值不被改變,能夠用非const的成員函數引用這些數據成員的值,并改動非const數據成員的值。

2)?假設要求全部的數據成員的值都不同意改變,則能夠將全部的數據成員聲明為const,或將對象聲明為const(常對象),然后用const成員函數引用數據成員,這樣起到“雙保險”的作用,切實保證了數據成員不被改動。

3)?假設已定義了一個常對象,僅僅能調用當中的const成員函數,而不能調用非const成員函數(不論這些函數是否會改動對象中的數據)。這是為了保證數據的安全。假設須要訪問對象中的數據成員,可將常對象中全部成員函數都聲明為const成員函數,但應確保在函數中不改動對象中的數據成員。



轉載于:https://www.cnblogs.com/gcczhongduan/p/4307941.html

總結

以上是生活随笔為你收集整理的面向对象程序中的常量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。