已采納回答 / 慕前端4039174
如果沒有自定義析構(gòu)函數(shù),系統(tǒng)會自動生成一個默認(rèn)的析構(gòu)函數(shù),在刪除對象時運行。它并不是沒有運行,你是在棧上定義的對象,所以在整段程序結(jié)束時系統(tǒng)再會調(diào)用析構(gòu)函數(shù),你只是沒有看到而已(此時程序還沒運行完),如果用在堆上定義,在釋放內(nèi)存時會看到調(diào)用的。
2016-02-03
已采納回答 / 張土土
1、Array arr1 當(dāng)實例化一個arr1的時候,因為有Array Array::printInfo()存在,系統(tǒng)會創(chuàng)建一個Array類的隱形變量,我們姑且用arr2來表示隱形變量,這時arr1和arr2指向的是不同的地址,有點類似于windows的復(fù)制操作。 系統(tǒng)執(zhí)行arr1.printInfo( return * this)的時候,其實相當(dāng)于arr1.printInfo( &arr2=*this; return arr2; ),所以arr1.printInfo().setlen(5)就是a...
2016-01-07
已采納回答 / DoDream
因為要調(diào)用父類的有兩個參數(shù)的那個構(gòu)造函數(shù),如果初始化放在子類的構(gòu)造函數(shù)中而不用初始化列表,很難調(diào)用父類的有兩個參數(shù)的那個構(gòu)造函數(shù),當(dāng)然你可以在子類的構(gòu)造函數(shù)中這樣寫:m_coorA.x = x1;m_coorA.y = y1;m_coorB.x = x1;m_coorB.y = y1;這樣寫可以達(dá)到初始化的目的,但寫的代碼就多了,直接調(diào)用父類的有兩個參數(shù)的那個構(gòu)造函數(shù)就簡單多了,所以選擇用初始化列表。
2015-11-26
已采納回答 / Power12138
第一個問題:new指的是在堆中分配m_iCount個int內(nèi)存單元,這塊內(nèi)存單元的首地址賦給m_pArr指針變量,這樣子的會就可以通過m_pArr去訪問這塊內(nèi)存單元第二個問題,答案是一樣的,第二個更加細(xì)節(jié)的描述就是第一個那樣子去寫
2015-11-23
已采納回答 / onemoo
const對象是一旦被構(gòu)造出來,其值就不能被改變了。而構(gòu)造初始化列表就是用來構(gòu)造成員變量的,對const成員來說,初始化列表中提供的值就作為構(gòu)造它們的初值。所以這里并不是賦值操作。
2015-10-30
已采納回答 / 一曲幽魂付衷情
A *a=new A; 和 A *a=new A();?都是調(diào)用A類的默認(rèn)構(gòu)造函數(shù)?。。。〉侨绻麊为毬暶饕粋€A 類變量,如:A a;則調(diào)用的是默認(rèn)構(gòu)造函數(shù),但是不能寫成 A a()來調(diào)用默認(rèn)構(gòu)造函數(shù)!!因為這種形式會被識別成一個:名稱為a的不接受任何參數(shù),返回值為A類型的函數(shù)?。?!
2015-10-18
已采納回答 / onemoo
可以直接返回Array,但這樣并不好。&這表明返回的是array引用。類成員函數(shù)有時打算返回類實例自身,就會返回*this的引用。而有時并不一定需要返回自身,但仍會選擇返回引用,原因如下:函數(shù)在返回值的時候,是先用你要返回的變量去構(gòu)造一個臨時變量,再將這個臨時變量返回給接受返回值的調(diào)用者。在調(diào)用者使用過后,這個臨時變量再被自動銷毀。如果返回的是一個很大的類實例的話,構(gòu)造這個臨時變量會調(diào)用拷貝構(gòu)造函數(shù),這可能造成很大的運行開銷(例子中的情況下array會被整個復(fù)制一遍)。為了減少這種負(fù)面影響,在一些...
2015-10-17
已采納回答 / onemoo
不用包含.cpp文件,實際上根本不應(yīng)包含任何含有實現(xiàn)的文件。Coordinator.h 中含有Coordinator類的定義(不是類實現(xiàn))。C++中的符號只要提前聲明就可使用。對類來說,有了類定義就可以使用這個類。對函數(shù)來說,有了函數(shù)原型的聲明,就可以進(jìn)行函數(shù)調(diào)用。把函數(shù)和類的聲明單獨寫在 .h 文件中就是為了讓其他想要使用它們的源文件只要include這些“頭文件”就可以使用了。
2015-09-11
已采納回答 / onemoo
這個pCoor只是指針本身是const,并不是所指的對象是const的。所以只是這個pCoor本身不能更改(不能指向其他Coordinate對象),而pCoor所指的coor1是可以被更改的。所以調(diào)用普通成員函數(shù)沒有問題。你所說的那種指針應(yīng)該這樣聲明:<...code...>
2015-09-11
已采納回答 / onemoo
這兩種寫法對于有默認(rèn)構(gòu)造函數(shù)的類對象來說沒有區(qū)別,這兩種寫法都是調(diào)用其默認(rèn)構(gòu)造函數(shù)。所以如果Coordinate有默認(rèn)構(gòu)造函數(shù),這樣的寫法就沒區(qū)別。沒有默認(rèn)構(gòu)造函數(shù)的話,這兩種寫法都編譯不過。另外,這兩種寫法對于built-in類型是有區(qū)別的:不帶括號時,構(gòu)造的對象是default?initialized,對于built-in類型,這種情況下初值是不確定的。帶空括號時,對象是value?initialized,對于built-in類型來說,初值一般是0。
2015-09-05