看板Programming
标 题Re: 阵列与物件
发信站无名小站 (Sun Oct 29 09:26:16 2006)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!wretch
※ 引述《[email protected] (我要出清)》之铭言:
> 其实原文的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海