C++類的初探

大家好,這次打算簡單學習C++的類。

直接看題吧:

1、輸入圓的半徑和圓柱的高,依次輸出圓周長、圓面積、圓球表面積、圓柱體積(以空格

分隔,π取 3.14)。

1)定義一個 Point 類,其屬性包括點的座標,提供計算兩點之間距離的方法;
2)定義一個圓形類,
a.其屬性包括圓心和半徑;

b.創建兩個圓形對象, 提示用戶輸入圓心座標和半徑, 判斷兩個圓是否相交, 並輸出結果。

第一題:

	class Cyl_cal
	{
	public:
		Cyl_cal():PI(3.14)
		{
			cout<<"輸入半徑:"<<endl;
			cin>>cyl_radius;
			cout<<"輸入高度:"<<endl;
			cin>>cyl_hight;
		}
		void Cyl_out();
	protected:
	private:
		double cyl_radius;
		double cyl_hight;
		const double PI;
	};
	void Cyl_cal::Cyl_out()
	{
		cout<<"圓周長:"<<2*PI*cyl_radius<<endl;
		cout<<"圓面積:"<<PI*cyl_radius*cyl_radius<<endl;
		cout<<"圓柱體積:"<<PI*cyl_radius*cyl_radius*cyl_hight<<endl;
		cout<<"圓柱面積:"<<(PI*cyl_radius*cyl_radius+2*PI*cyl_radius*cyl_hight)<<endl;
	}
	Cyl_cal Cyl;
	Cyl.Cyl_out();

第一題需要注意到的是const 修飾的類的成員,它的初始化只能採用構造函數的方式,這裏也可以不使用這種方式,在這裏僅僅只是爲了學習const以及構造函數。

第二題:打算使用友元類來實現。

1)這題使用類的友元函數訪問類的私有成員。

class Point_class
	{
	public:
		Point_class(string m = "");
		friend double distance_point(Point_class&A,Point_class&B);
	protected:
	private:
		double x;
		double y;
	};
	Point_class::Point_class(string m)
	{
		cout<<"輸入"<<m<<"點的x座標"<<endl;
		cin>>x;
		cout<<"輸入"<<m<<"點的y座標"<<endl;
		cin>>y;
		cout<<m<<"點的座標爲("<<x<<","<<y<<")"<<endl;
	}

	double distance_point(Point_class&A,Point_class&B)
	{
		double distance_hor = A.x - B.x;
		double distance_ver = A.y - B.y;
		double distance_pt = sqrt(distance_hor*distance_hor + distance_ver*distance_ver);
		return distance_pt;
	}
	
int main()
{
        Point_class A("A");
	Point_class B("B");
	cout<<"兩點之間的距離爲:"<<distance_point(A,B)<<endl;
	system("pause");
	return 0;
} 

2)、

	class Circle_class
	{
	public:
		Circle_class(string m = "");
		friend class Circle_manag_class;
	protected:
	private:
		double x;
		double y;
		double cir_radius;
	};

	class Circle_manag_class
	{
	public:
		double distance_Circle(Circle_class&A,Circle_class&B);
	protected:
	private:
	};
	Circle_class::Circle_class(string m)
	{
		cout<<"輸入"<<m<<"圓心的x座標"<<endl;
		cin>>x;
		cout<<"輸入"<<m<<"圓心的y座標"<<endl;
		cin>>y;
		cout<<"輸入"<<m<<"半徑"<<endl;
		cin>>cir_radius;
		cout<<m<<"點的座標爲("<<x<<","<<y<<")"<<endl;
	}

	double Circle_manag_class::distance_Circle(Circle_class&A,Circle_class&B)
	{
		double distance_hor = A.x - B.x;
		double distance_ver = A.y - B.y;
		double distance_pt = sqrt(distance_hor*distance_hor + distance_ver*distance_ver);

		if (distance_pt < (A.cir_radius + B.cir_radius)&&distance_pt > abs(A.cir_radius - B.cir_radius))
		{
			cout<<"相交"<<endl;
			return true;
		} 
		else
		{
			cout<<"不相交"<<endl;
			return false;
		}
int main()
{	
	Circle_class A("A");
	Circle_class B("B");

	Circle_manag_class M;
	M.distance_Circle(A,B);

	system("pause");
	return 0;
} 

好類的友元就學習到這裏了,不喜勿噴,謝謝王老師。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章