野媛
(咸陽(yáng)師范學(xué)院,陜西 咸陽(yáng) 712000)
C++語(yǔ)言是一種使用非常廣泛的程序設(shè)計(jì)語(yǔ)言,是在C語(yǔ)言的基礎(chǔ)上發(fā)展演變而來(lái)的,它既保留了C語(yǔ)言面向過(guò)程的編程方法,又添加了面向?qū)ο蟮木幊谭椒?。在面向?qū)ο缶幊谭椒ㄖ?,?duì)象是編程的首要元素,是編程的基礎(chǔ),而在建立一個(gè)對(duì)象時(shí)首先要作的就是對(duì)對(duì)象數(shù)據(jù)成員的初始化。如果一個(gè)對(duì)象的數(shù)據(jù)成員未被初始化,它的初值是不可預(yù)測(cè)的,因?yàn)樵谙到y(tǒng)為它分配內(nèi)存空間時(shí)保留了這些存儲(chǔ)單元的原狀,這就成了這些數(shù)據(jù)成員的初始值,這種狀況顯然與程序設(shè)計(jì)者的初衷是不相符的,往往導(dǎo)致程序運(yùn)行結(jié)果是錯(cuò)誤的。因此對(duì)象的初始化是正確使用對(duì)象的前提,是程序能否正確運(yùn)行的基礎(chǔ),也是編程時(shí)首要解決的問(wèn)題,是編程的重中之重。但是根據(jù)我多年的教學(xué)和實(shí)踐經(jīng)驗(yàn),對(duì)象的初始化也是學(xué)習(xí)和編程時(shí)容易出錯(cuò)的地方。本文對(duì)C++程序設(shè)計(jì)中對(duì)象初始化的方法技巧做了如下的歸納和總結(jié)。
方法一:在主函數(shù)中,直接給對(duì)象的數(shù)據(jù)成員賦初值
方法二:在類中定義成員函數(shù),用以對(duì)數(shù)據(jù)成員賦值,在主函數(shù)中調(diào)用對(duì)象的成員函數(shù),從而達(dá)到對(duì)對(duì)象初始化
方法三:使用構(gòu)造函數(shù)給對(duì)象初始化
C++提供了構(gòu)造函數(shù)來(lái)處理對(duì)象的初始化,構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的功能就是在定義對(duì)象時(shí)對(duì)數(shù)據(jù)成員賦初值。與其他成員函數(shù)不同,它有如下特征:
(1)構(gòu)造函數(shù)的名字必須與類名同名。
(2)它不具有任何類型,不返回任何值。
(3)不需要用戶來(lái)調(diào)用它,建立對(duì)象時(shí)自動(dòng)執(zhí)行。
使用構(gòu)造函數(shù)在定義對(duì)象時(shí)對(duì)對(duì)象賦初值的方法使用起來(lái)非常靈活,下面我將它總結(jié)為四種:
(1)在構(gòu)造函數(shù)的函數(shù)體內(nèi)通過(guò)賦值語(yǔ)句對(duì)數(shù)據(jù)成員賦初值。
(2)在構(gòu)造函數(shù)的函數(shù)首部,通過(guò)參數(shù)初始化表來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)成員賦初值。
例如: Rec(double x,double y):length(x),width(y){}
Rec():length(1.0 ),width(1.0 ){}
(3)使用默認(rèn)參數(shù)的構(gòu)造函數(shù)。
例如:Rec(double x=1.0 ,double y=1.0 ):length(x),width(y){}
程序舉例:
以上三種對(duì)對(duì)象初始化的方法中,方法一和方法二在編程時(shí)比較繁瑣,但是對(duì)象的初始化工作是在程序運(yùn)行時(shí)由用戶從輸入設(shè)備輸入初值來(lái)實(shí)現(xiàn)的,因此用戶可隨時(shí)改變初始化的值,利于用戶的操作和程序的維護(hù)。而方法三使程序設(shè)計(jì)思路清晰、簡(jiǎn)單明了、而且程序易于閱讀,但對(duì)象的初始化工作是通過(guò)在編程階段由程序設(shè)計(jì)者在程序中指定初值來(lái)實(shí)現(xiàn)的,一旦初值有所改變,則要由編程人員在程序中修改,不利于程序的使用和維護(hù)。因此這三種方法各有利弊,用戶可根據(jù)需要進(jìn)行選擇。