Re: 陣列與物件
※ 引述《quota@kkcity.com.tw (我要出清)》之銘言:
> 其實原文的boxes[5]是空的,我想這既然是陣列,那我就給值
> 這動作是對的還是錯的呢?
> 該行程式碼如下:
> CBox boxes[5]={21,23,34,345,34};
> 但是讓我困惑的是..
> boxes[3].value這是怎麼來的?
> 為何是345?
> boxes執行的建構子是有參數的
> 那他是丟什麼值給lv、bv與hv呢?
> 懇請協助,謝謝
boxes[5]={21,23,34,345,34};
會分別建立
boxes(21)
boxes(23)
boxes(34)
boxes(345)
boxes(34)
因為只有一個參數,C++ compiler會自動尋找只需要一個參數的建構式:
故會呼叫 CBox::CBox(double lv, double bv = 1.0, double hv = 1.0)
這個建構式後面兩個參數式是選擇性的,所以實際上只需一個參數
您問的 lv、bv、hv 的值分別為
21, 1.0, 1.0
23, 1.0, 1.0
34, 1.0, 1.0
..
依此類推
> 附上語法
> #include <iostream>
> using namespace std;
> class CBox
> {
> public:
> CBox(double lv, double bv = 1.0, double hv = 1.0): m_Length(lv),
> m_Breadth(bv),
> m_Height(hv)
> {
> cout << endl << "Constructor called.";
> }
> CBox()
> {
> cout << endl
> << "Default constructor called.";
> m_Length = m_Breadth = m_Height = 1.0;
> }
> double Volume() const
> {
> return m_Length*m_Breadth*m_Height;
> }
> private:
> double m_Length;
> double m_Breadth;
> double m_Height;
> };
> int main()
> {
> CBox boxes[5]={21,23,34,345,34};
> CBox cigar(8.0, 5.0, 1.0);
> cout << endl
> << "Volume of boxes[3] = " << boxes[3].Volume()
> << endl
> << "Volume of cigar = " << cigar.Volume();
> cout << endl;
> system("PAUSE");
> return 0;
> }
--
信言不美,美言不信
善者不辯,辯者不善
知者不博,博者不知
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知 218-163-129-105.dynamic.hinet.net海
Programming 近期熱門文章
PTT數位生活區 即時熱門文章