以前在討論區裡常常看到有人說,兩三天或一個禮拜就K懂XXX語言
有時候都覺得他們很神,但實際工作後發現,其實應該都是被環境逼出來的
最近TRACE前端商家的Toolkit程式,由於是寫成COM元件,而我以前也沒寫過COM的經驗
一開始當然摸不著頭緒與架構用法,但經過我兩天all day的study,終於搞懂大致上的概念與撰寫方式
也許別人看起來好像也沒有什麼難的,但幾天前我真的拿一本COM的書,從底層一步一步keyin程式碼,練習如何建立COM與如何呼叫使用
練習到最後才發現原來有好用的ATL Wizard可以用來建立COM元件
建立方式可以參考我的論壇和記事本(兩個地方的文章都是蒐集網路上的資訊,皆非作者本人撰寫)
不過今天寫這篇其實是要講一個觀念,也許對很多老手一樣會覺得這不是本來就應該要懂得
但我覺得對於新手剛接觸C++物件導向,可能會在這個地方產生puzzle,我就是了 = ="
以前在研所寫視訊串流的時候,有用到,但沒仔細去想它的差別
我隨便舉個例子:
class Car{ private: int number; float price; public: void get_number(); void get_price(); };
在許多書上宣告完類別後,會直接用Car porsche;來宣告物件,使用porsche.number或porsche.get_number()的方式來存取member與method
可是有在TRACE大專案code的人會發現,上述的用法很少見,看到的幾乎都是用指標來建立物件,並使用「->」的方式來存取,如下:
Car *porsche; porsche = new Car; porsche->number; porsche->get_number();
兩種方法都可以,但其主要的差別是
一般物件在建立時是靜態的,所需之記憶體在編譯時就已經配置好,直到程式結束前仍保有該處之記憶體。
若用物件指標建立時是動態的,建立時才取得記憶體,用完後歸還,不但不會佔用空間也可達到資源回收之目的。
Place your comment