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

好类的友元就学习到这里了,不喜勿喷,谢谢王老师。






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