国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向?qū)ο蟪绦蛟O(shè)計(jì)中使用const實(shí)現(xiàn)數(shù)據(jù)保護(hù)

2018-01-04 11:06:12韓祥波
電腦知識(shí)與技術(shù) 2018年30期
關(guān)鍵詞:教學(xué)實(shí)踐

韓祥波

摘要:探討了const在常數(shù)組、常對(duì)象、指向?qū)ο蟮某V羔?、指向常?duì)象的指針、常引用、常對(duì)象調(diào)用常成員函數(shù)等方面的案例,通過(guò)在計(jì)算機(jī)專業(yè)和卓越班的面向?qū)ο蟪绦蛟O(shè)計(jì)課程中多次教學(xué)使用,較好的提高了學(xué)生的編程積極性。

關(guān)鍵詞:C++;const;常對(duì)象;常成員函數(shù);教學(xué)實(shí)踐

中圖分類號(hào): G642.0 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)30-0070-01

1 引言

在教學(xué)過(guò)程中經(jīng)常遇到學(xué)生對(duì)c++關(guān)鍵詞const困惑的情況:const是什么、為什么用、如何用、在使用時(shí)前后有哪些限制?諸如此類的小問(wèn)題影響了不少對(duì)關(guān)鍵知識(shí)點(diǎn)的理解,本文將對(duì)此探討求解。

2 教學(xué)實(shí)踐

2.1 用const 定義常量

最初引入const關(guān)鍵詞 的目的是為了取代預(yù)編譯指令,但只是形式上的替換有不少的缺陷,如:int a=1,b=2; #define x a+b 計(jì)算x*x得到結(jié)果是5而不是9。對(duì)于程序中經(jīng)常使用的需要共享、又需要防止改變的數(shù)據(jù)const 類型常量。如const int x=9。 定以后任何對(duì)x的改寫都是錯(cuò)誤的。

2.2 const修飾常數(shù)組

void f(const int s[], int x) {for ( int i = 0; i < x; i++) cout << s[i] << " ";}

上述代碼對(duì)數(shù)組進(jìn)行const修飾后不可以在循環(huán)體內(nèi)對(duì)數(shù)組改寫。若循環(huán)體中添加注釋行s[i]++;則因常數(shù)組不可更改而報(bào)錯(cuò)。

2.3 const修飾常對(duì)象及常對(duì)象成員

class Cobj {public:Cobj(int x) :m1(x){} int m1; };

int main(){ const Cobj t1(10); t1.m1=12; return 0}

若t1(10) ; 改為const Cobj t1(10);則因常對(duì)象成員不可改寫而報(bào)錯(cuò)。

class Cobj {public:

Cobj(int x) :m1(x){}

const int m1;void show() {cout<

void show(Cobj t) {cout<

int main(){ Cobj t1(10); cout<

show(t1); return 0;}

類中的常成員m1可以被類內(nèi)外的同名show()函數(shù)訪問(wèn),但在兩個(gè)函數(shù)任一個(gè)的函數(shù)體內(nèi)修改m1的值,都因m1的const性而報(bào)錯(cuò)。故類的常成員初始化只能在構(gòu)造函數(shù)初始化表中進(jìn)行即Cobj(int x) :m1(x){}語(yǔ)句。

2.4 const修飾指向?qū)ο蟮某V羔?/p>

class Cobj {public:Cobj(int x) :m1(x){} int m1; };

int main(){ Cobj t1(10),t2(20);

Cobj * const p=&t1;; p->m1=12; return 0;}

上述代碼中使用了指向普通對(duì)象的常指針,初始化必須在定義時(shí)完成,可以改變對(duì)象的成員值,但不能讓該指針再次賦值,如添加p=&t2;則報(bào)錯(cuò)。

2.5指向常對(duì)象的指針變量

class Cobj {public:Cobj(int x) :m1(x){} int m1;};

int main(){ const Cobj t1(10);

const Cobj * p=&t1;; cout<

上面使用了指向常對(duì)象的普通指針,但定義該類型指針時(shí)const不能省略,否則因指針類型不對(duì)而編譯報(bào)錯(cuò),即使常對(duì)象對(duì)成員進(jìn)行了保護(hù)。

2.6 const修飾對(duì)象的常引用

class Cobj {public:Cobj(int x):m1(x) {}int m1;};

int main(){ Cobj t1(10);

const Cobj & r=t1; cout<

上面用到了對(duì)普通對(duì)象的常引用,實(shí)現(xiàn)了只讀不寫保護(hù)對(duì)象的目的,故添加r.m1=12的代碼會(huì)編譯報(bào)錯(cuò)。引用的本質(zhì)是對(duì)已知變量的別名,不必建立實(shí)參的拷貝,不開(kāi)辟新的內(nèi)存空間,減少了內(nèi)存開(kāi)銷,提高了運(yùn)行效率,但初始化只能在定義時(shí)進(jìn)行。

2.7 常對(duì)象調(diào)用常成員函數(shù)

class Cobj {public:Cobj(int x):m1(x) {}int m1;

void f1(const Cobj * p)const{cout<m1<

int main(){ const Cobj t1(10); t1.f1(&t1;); return 0;}

上面常對(duì)象調(diào)用員函數(shù)時(shí)只能調(diào)用常成員函數(shù),若f1函數(shù)的修飾詞const刪掉則變成普通成員函數(shù)而編譯報(bào)錯(cuò)。同時(shí)f1的形參表中的const也不可刪掉,即使函數(shù)體無(wú)改變對(duì)象成員值的意圖也不可。由于成員函數(shù)聲明的是常成員函數(shù),故函數(shù)體中也不可改寫成員值。上述三種情況任一種出現(xiàn)都會(huì)編譯出錯(cuò)。調(diào)用對(duì)象或?qū)崊閏onst性質(zhì)時(shí),無(wú)論函數(shù)體內(nèi)是否想改寫,形參必須為const修飾。

3 結(jié)論

恰當(dāng)?shù)脑谌趾途植孔兞?、形參和?shí)參、類和對(duì)象等,利用const特性可以實(shí)現(xiàn)保護(hù)和開(kāi)放的有效平衡,即方便的讀取了數(shù)據(jù),又進(jìn)行了保護(hù),配合引用類型的使用較好的提高了程序的效率。

參考文獻(xiàn):

[1] 柴小偉.大數(shù)據(jù)時(shí)代下計(jì)算機(jī)網(wǎng)絡(luò)信息安全[J].計(jì)算機(jī)與網(wǎng)絡(luò),2016(17):52-53.

[2] 宋海玉,李錫祚,王玲芬,等. 面向?qū)ο蟪绦蛟O(shè)計(jì)課程建設(shè)的探索與實(shí)踐[J].計(jì)算機(jī)教育,2009(5):91-94.

[3] 夏承遺,李文杰,孫世溫. 問(wèn)題驅(qū)動(dòng)的“C++ 程序設(shè)計(jì)”教學(xué)方法研究[J].計(jì)算機(jī)教育,2010(1):122-125.

[4] 錢能.C++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,1999.

【通聯(lián)編輯:王力】1

猜你喜歡
教學(xué)實(shí)踐
財(cái)務(wù)業(yè)務(wù)一體化課程教學(xué)的改革分析與實(shí)踐應(yīng)用
小學(xué)數(shù)學(xué)體驗(yàn)性學(xué)習(xí)的教學(xué)實(shí)踐
低年級(jí)衛(wèi)生習(xí)慣的培養(yǎng)
基于三維軟件和云班課APP的機(jī)械設(shè)計(jì)課程教學(xué)實(shí)踐
職業(yè)(2016年10期)2016-10-20 22:23:49
中職職業(yè)生涯規(guī)劃課程的教學(xué)反思
職業(yè)(2016年10期)2016-10-20 21:59:29
試論類比推理在高等數(shù)學(xué)教學(xué)實(shí)踐中的應(yīng)用
《單片機(jī)原理與應(yīng)用》課程教學(xué)改革與實(shí)踐
科技視界(2016年22期)2016-10-18 16:51:33
中職計(jì)算機(jī)應(yīng)用課程教學(xué)改革與反思
科技視界(2016年21期)2016-10-17 18:57:24
淺論高中化學(xué)生活化教學(xué)的實(shí)踐與思考
考試周刊(2016年79期)2016-10-13 23:10:24
淺談初中物理實(shí)驗(yàn)教學(xué)與學(xué)生創(chuàng)新能力的培養(yǎng)
考試周刊(2016年79期)2016-10-13 23:09:42
汉阴县| 沁源县| 丹阳市| 永顺县| 田林县| 光泽县| 延川县| 邵阳县| 历史| 闽清县| 彭山县| 金秀| 新郑市| 万源市| 望谟县| 黔西| 新乐市| 任丘市| 山西省| 翼城县| 万盛区| 张掖市| 福海县| 三穗县| 东安县| 鲁山县| 高碑店市| 民乐县| 枣庄市| 临夏市| 东乌珠穆沁旗| 乌鲁木齐县| 蕲春县| 垣曲县| 浏阳市| 布拖县| 仙游县| 冷水江市| 百色市| 临沧市| 京山县|