大家好,这次打算简单学习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;
}
好类的友元就学习到这里了,不喜勿喷,谢谢王老师。