天天看點

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;
} 
           

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

C++類的初探

繼續閱讀