freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

孫鑫vc++教程之第06節(jié)補(bǔ)充課件-02-類初始化、賦值、析構(gòu)-文庫(kù)吧

2025-07-20 15:25 本頁(yè)面


【正文】 數(shù) 缺省情況下單參數(shù)構(gòu)造函數(shù)(或者有多個(gè)參數(shù)的,除第一個(gè)參數(shù)外,其他都有缺省值的構(gòu)造函數(shù))被用作轉(zhuǎn)換操作符。我們看下面這樣一段代碼: int main() { // 把 oops 轉(zhuǎn)換成一個(gè) Account 對(duì)象 // 用 Account::Account( oops, ) print( oops )。 // ... } 這里把字符串“ oops”隱式的轉(zhuǎn)換為 Account對(duì)象,這并不是我們希望的。這種無(wú)意識(shí)的隱式類轉(zhuǎn)換,是一種很難跟蹤的錯(cuò)誤。為了解決這個(gè)問(wèn)題,我們使用關(guān)鍵字“ explicit”,幫助我們抑制這種不受歡迎的輔助行為。 explicit通知編譯器不要提供隱式的轉(zhuǎn)換,該關(guān)鍵字只能被應(yīng)用在構(gòu)造函數(shù)上。 缺省構(gòu)造函數(shù) 缺省構(gòu)造函數(shù) 是指不需要用戶指定實(shí)參就能夠被調(diào)用的構(gòu)造函數(shù),但并不意味著不接受實(shí)參,只是說(shuō)構(gòu)造函數(shù)的每個(gè)參數(shù)都有一個(gè)缺省值與之關(guān)聯(lián)。 在 C++語(yǔ)言中是一種讓你無(wú)中生有的方法。構(gòu)造函數(shù)能初始化對(duì)象 ,而缺省構(gòu)造函數(shù)則可以不利用任何在建立對(duì)象時(shí)的外部數(shù)據(jù)就能初始化對(duì)象。 有時(shí)這樣的方法是不錯(cuò)的。例如一些行為特性與數(shù)字相仿的對(duì)象被初始化為空值或不確定的值也是合理的,還有比如鏈表、哈希表、圖等等數(shù)據(jù)結(jié)構(gòu)也可以被初始化為空容器。 但不是所有的對(duì)象都屬于上述類型,對(duì)于很多對(duì)象來(lái)說(shuō),不利用外部數(shù)據(jù)進(jìn)行完全的初始化是不合理的。例如,帳戶建立的時(shí)候需要我們產(chǎn)生一個(gè)唯一的帳號(hào)信息等 缺省構(gòu)造函數(shù) // 每個(gè)都是缺省構(gòu)造函數(shù) Account::Account() { ... } iStack::iStack( int size = 0 ) { ... } Complex::Complex(double re=,double im=) { ... } 當(dāng)我們寫 int main() { Account acct。 // ... } 缺省構(gòu)造函數(shù) 編譯器首先檢查 Account 類是否定義了缺省構(gòu)造函數(shù)以下情況之一會(huì)發(fā)生 1 定義了缺省構(gòu)造函數(shù),它被應(yīng)用到 acct 上 2 定義了缺省構(gòu)造函數(shù)但它不是公有的。 acct 的定義被標(biāo)記為編譯時(shí)刻錯(cuò)誤: main()沒(méi)有訪問(wèn)權(quán)限。 3 沒(méi)有定義缺省構(gòu)造函數(shù),但是定義了一個(gè)或者多個(gè)要求實(shí)參的構(gòu)造函數(shù)。 acct 的定義被標(biāo)記為編譯時(shí)刻錯(cuò)誤:實(shí)參太少 4 沒(méi)有定義缺省構(gòu)造函數(shù),也沒(méi)有定義其他構(gòu)造函數(shù),該定義是合法的。 acct 沒(méi)有被初始化,沒(méi)有調(diào)用任何構(gòu)造函數(shù)。 缺省構(gòu)造函數(shù) 1, 3容易被理解。下面詳細(xì)解釋一下 2, 4。由于缺省構(gòu)造函數(shù)為私有或者不存在任何構(gòu)造函數(shù),那么類對(duì)象的定義都不會(huì)導(dǎo)致“類特有的初始化”發(fā)生。數(shù)據(jù)成員的值取決于每個(gè)對(duì)象定義的上下文環(huán)境。我們看下面的例子,三個(gè)公有成員,但是沒(méi)有任何構(gòu)造函數(shù)。 class Account { public: char *_name。 unsigned int _acct_nmbr。 double _balance。 }。 缺省構(gòu)造函數(shù) 如果聲明一個(gè)靜態(tài)類對(duì)象,則所有的數(shù)據(jù)成員被初始化為 0,如果類對(duì)象為局部定義或者動(dòng)態(tài)分配內(nèi)存的對(duì)象,則數(shù)據(jù)成員會(huì)被隨機(jī)初始化,該值是程序允許堆棧中上一次被使用的結(jié)果。 初學(xué)者常常認(rèn)為,如果不存在缺省構(gòu)造函數(shù),則編譯器會(huì)自動(dòng)生成一個(gè)缺省構(gòu)造函數(shù),并應(yīng)用到對(duì)象上,以初始化類數(shù)據(jù)成員。事實(shí)并非如此,對(duì)于含有類數(shù)據(jù)成員或者繼承來(lái)的比較復(fù)雜的類,是對(duì)的,可能會(huì)生成一個(gè)缺省構(gòu)造函數(shù),但是它不會(huì)為內(nèi)置或者復(fù)合型的數(shù)據(jù)成員(如指針、數(shù)組)提供初始值。 限制對(duì)象創(chuàng)建 前面我們已經(jīng)提及到非公有的構(gòu)造函數(shù)。我們可以把構(gòu)造函數(shù)放到非公有區(qū)從而限制或顯式的禁止某些形式的對(duì)象創(chuàng)建動(dòng)作。 class Account { friend class vector Account 。 public: explicit Account( const char*, double = )。 // ... private: Account()。 }。 一般程序只能用關(guān)聯(lián)名或賬戶名和開戶余額定義 Account對(duì)象。 Account的成員函數(shù)及其友員 vector可以用任何一個(gè)構(gòu)造函數(shù)來(lái)定義 Account對(duì)象。 在實(shí)際應(yīng)用中,非公有構(gòu)造函數(shù)的主要用途是: 1.防止用一個(gè)類對(duì)象向該類的另一個(gè)對(duì)象做拷貝。 2.指出只有一個(gè)類在繼承層次中被用作基類,而不能直接被應(yīng)用程序操作時(shí),構(gòu)造函數(shù)才能被調(diào)用。 拷貝構(gòu)造函數(shù) 用一個(gè)類對(duì)象初始化該類的另一個(gè)對(duì)象被稱為缺省按成員初始化。在概念上,一個(gè)類對(duì)象向該類的另一個(gè)對(duì)象做拷貝是通過(guò)以此拷貝每個(gè)非靜態(tài)數(shù)據(jù)成員來(lái)實(shí)現(xiàn)的。我們也可以通過(guò)提供特殊的拷貝構(gòu)造函數(shù)來(lái)改變?nèi)笔⌒袨椤H绻x來(lái)拷貝構(gòu)造函數(shù),則在用一個(gè)類初始化該類另一個(gè)對(duì)象時(shí)會(huì)被調(diào)用。 拷貝構(gòu)造函數(shù)有一
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1