构造器和析构器 - C++快速入门15
生活随笔
收集整理的這篇文章主要介紹了
构造器和析构器 - C++快速入门15
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構造器和析構器
?讓編程改變世界
Change the world by program
?
定義構造器
?回顧:之前我們討論了使用面向對象的編程技術開發程序最基本步驟:
定義一個有屬性和方法的類(模板)
為該類創建一個變量(實現)
這是OOP技術的基礎,小甲魚接著將逐步向大家介紹一些更復雜和更有用的概念。 首先是構造器,它是類里的一種特殊的方法。 ?構造器和通常方法的主要區別:
構造器的名字必須和它所在的類的名字一樣 系統在創建某個類的實例時會第一時間自動調用這個類的構造器 構造器永遠不會返回任何值 ?創建構造器,需要先把它的聲明添加到類里:
class Car {Car( void );
} ?注意大小寫與類名保持一致。在結束聲明之后開始定義構造器本身:
Car::Car(void) ? ?// 不用寫 void Car::Car(void) {color = “WHITE”;
engine = “V8”;
wheel = 4;
gas_tank = FULL_GAS;
} ? 好,到這里我們就可以自己著手對之前打造的那輛跑車代碼進行”改裝”了吧? 代碼下載地址 ?構造對象數組
? 之前我們已經說過,數組可以是任何一種數據類型,當然也包括對象。 如:Car mycar[10]; 調用語法依舊是:mycar[x].running; 注:x代表著給定數組元素的下標。 好了,自己造十幾輛法拉利”自慰下”。 ?Pay attention
? 每個類至少有一個構造器,如果你沒有在類里定義一個構造器,編譯器就會使用如下語法替你定義一個:ClassName::ClassName() { } 這是一個沒有代碼內容的空構造器,除此之外,編譯器還會替你創建一個副本構造器(CopyConstructor)。(這個遲些給大家介紹) 這一切都發生在幕后,而小甲魚在這里給大家提出主要目的是希望大家能夠了解構造器有多么重要。 一種常見的做法是在創建對象的同時做一些事情(構造器背后搞鬼),在對象創建出來之后用另一個方法做同樣或者不同的事情。 如:Car mycar;
mycar.setColor(“Yellow”);
? ?定義析構器
? 從前邊的內容我們了解到,在創建對象時,系統都會自動調用一個特殊的方法,即構造器。 相應地,在銷毀一個對象時,系統也應該會調用另一個特殊方法達到對應效果? 沒錯,這就是析構器。 ? 一般來說,構造器用來完成事先的初始化和準備工作(申請分配內存),析構器用來完成事后所必須的清理工作(清理內存)。 構造器和析構器兩者相輔相成,有許多共同之處。首先,析構器有著和構造器/類一樣的名字,只不過前邊多了一個波浪符“~”前綴。 class Car {Car(void);
~Car();
} 其次,析構器也永遠不返回任何值。 另外,析構器是不帶參數的。所以析構器的聲明永遠是如下格式:~ClassName(); 在我們剛剛的例子中析構器可有可無。但是在比較復雜的類里,析構器往往至關重要(可能引起內存泄露)。 例如某個類的構造器申請了一塊內存,我們就必須在析構器里釋放那塊內存。 ? 不是每一滴牛奶都叫特倫蘇 [caption id="attachment_466" align="aligncenter" width="300"] 不是每一滴牛奶都叫特倫蘇[/caption] ? 演示:請詳細觀看視頻演示(代碼下載地址) [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://urlxf.qq.com/?J3eYnqy']視頻下載[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LKOJJOXAFUPR']備胎下載[/Downlink]轉載于:https://www.cnblogs.com/LoveFishC/archive/2012/02/13/3847160.html
總結
以上是生活随笔為你收集整理的构造器和析构器 - C++快速入门15的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts 学习笔记2(输入校验、国际
- 下一篇: Eclipse c++ 中[Linker