class CCompute<br />{<br />protected:<br />int i;<br />int j;<br />public:<br /> CCompute(int a,int b)<br /> {<br /> i=a;j=b;<br /> }<br /> ~CCompute(){}<br />};</p><p>class CCompute2:public CCompute<br />{<br />public:<br /> CCompute2(int a,int b)<br /> {<br /> i=a;j=b;<br /> }<br />};<br />
程式編譯一直不能通過,自己就在那反覆的琢磨,總不知道哪裡有問題。即使改了可以運行了,卻說不出為什麼。於是就去問xmu的swgr,經過他的一番解釋,終於明白了,原來是基類建構函式的原因,太謝謝swgr了!
分析:
CCompute2(int,int)裡,沒有指定如何對父類部分進行構造
預設是調用父類的無參建構函式
而上面程式父類沒有無參建構函式
原因就在這裡了。
修改一:
class CCompute<br />{<br />protected:<br />int i;<br />int j;<br />public:<br /> CCompute(int a,int b)<br /> {<br /> i=a;j=b;<br /> }<br /> ~CCompute(){}<br />};</p><p>class CCompute2:public CCompute<br />{<br />public:<br /> CCompute2(int a,int b):CCompute(a,b)<br /> {}<br />};<br />
修改二:
class CCompute<br />{<br />protected:<br />int i;<br />int j;<br />public:<br /> CCompute(){}<br /> CCompute(int a,int b)<br /> {<br /> i=a;j=b;<br /> }<br /> ~CCompute(){}<br />};</p><p>class CCompute2:public CCompute<br />{<br />public:<br /> CCompute2(int a,int b)<br /> {<br /> i=a;j=b;<br /> }<br />};<br />