天天看點

第6周-任務3-設計平面坐标點類

【題目】設計平面坐标點類,計算兩點之間距離、到原點距離、關于坐标軸和原點的對稱點等

【分析】本題中引入的新内容包括:(1)對象作函數的參數:double distance(cpoint p) const,同時,這個函數是常成員函數;(2)函數的傳回值類型不是簡單類型,而是類:cpoint symmetricaxis(symmetricstyle style) const,使用枚舉類型可能對一些同學而言也并熟悉。

【講解視訊】

第6周-任務3-設計平面坐标點類

【參考解答】

對比第46行開始的cpoint::distance(cpoint p)函數定義了解下面的内容。

【要點了解】

有同學提出能不能在參數中給出兩點,求這兩點間的距離?當然可以。看下面的例子

【讨論】這裡涉及到兩種對求距離的處理方法

方法1:用類的成員函數實作

成員函數的定義

調用成員函數求距離:

方法2:用一般函數實作

調用函數求距離:

(1)在方法1中函數調用d=p1.distance(p2);是典型的面向對象思維,求距離distance是對象p1的行為,是p1的功能,是p1求對p2的距離,p1是這個動作的發起者,p2為這個動作提供資料;方法2是面向過程的思維,在main()函數中,由main()作主求距離,求的是p1和p2距離,p1和p2地位平等。

(2)在方法1中,p1的資料成員x和y在類的成員函數中可以直接使用,也可以用this->x和this->y通路,這是内部事務;而在方法2中,已經不是類的地盤所在,p1.x、p1.y不能通路對象中的私有成員,需要定義通路私有成員的接口getx()和gety(),才能得到對象中x和y的值,資訊隐藏在此發威。

(本文完)