C++中三个 类的案例

案例一、
请设计一个 Person 类,Person 类具有 name 和 age 属性,提供初始化函数 (Init),并提供对 name 和 age 的读写函数(set,get),但必须确保 age 的赋值在有 效范围内(0-100),超出有效范围,则拒绝赋值,并提供方法输出姓名和年龄.

#include <iostream>
#include <string.h>
using namespace std;

class Person
{
private://私有数据
        char m_name[32];//定义时候不要初始化
        int m_age;
public://公有函数
		
		//初始化函数
        void initPerson(char *name, int age)
        {
            strcpy(m_name,name);
                    m_age = age;
        }
		//对m_name进行写操作
        void setName(char *name)
        {
            strcpy(m_name,name);
        }
		//对m_name进行读操作
        char *getName(void)
        {
            return m_name;
        }
		//对m_name进行写操作
        void setAge(int age)
        {
            if(age>0 && age<100)
                m_age = age;
            else
                cout << "无效"<<endl;
        }
		//对m_name进行读操作
        int getAge(void)
        {
            return m_age;
        }
		//遍历数据
        void showPerson(void)
        {
            cout <<"姓名:"<<m_name<<" 年龄:"<<m_age<<endl;
        }


};

int main(int argc, char *argv[])
{
    Person pee;//通过类,实例化一个对象
     pee.initPerson("bbb",20);//初始化一个对象
     cout << "姓名:"<<pee.getName()<<endl;
     cout <<"年龄" << pee.getAge()<<endl;
     pee.showPerson();//遍历

     pee.setName("ccc");//写一个名字
     pee.setAge(19);//写一个年龄
    cout << "姓名:"<<pee.getName()<<endl;
    cout <<"年龄" << pee.getAge()<<endl;
    pee.showPerson();

    return 0;
}

运行结果:
在这里插入图片描述
案例二、设计立方体类
设计立方体类(Cube),求出立方体的面积( 2ab + 2ac + 2bc )和体积( a * b * c),分别 用全局函数和成员函数判断两个立方体是否相等。

#include <iostream>

using namespace std;
class Cub
{
 private:
    int m_l;
    int m_w;
    int m_h;
 public:

    void setL(int l)//长
    {
        m_l = l;
    }

    void setW(int w)//宽
    {
        m_w = w;
    }

    void setH(int h)//高
    {
        m_h = h;
    }

    int getL(void)
    {
        return m_l;
    }
    int getW(void)
    {
        return m_w;
    }
    int getH(void)
    {
        return m_h;
    }

    //计算面积
    int gets()
    {
        return 2*(m_l*m_w+m_l*m_h+m_h*m_w);
    }

    //计算体积
    int getc()
    {
        return m_l*m_w*m_h;
    }

    //局部比较函数
    bool conparecub2(Cub &ob)
    {
        if(m_l == ob.m_l && m_h == ob.m_h && m_w == ob.m_w)
            return true;
        else
            return false;

    }
};

//全局比较 函数
bool comparecub1(Cub &cub1,Cub &cub2)//用引用的好处:传参数,节省空间
{
    if(cub1.getL()==cub2.getL() && cub1.getH()==cub2.getH() && cub1.getW()==cub2.getW())
        return true;
    else
        return false;
}

int main(int argc, char *argv[])
{
    Cub cub1;
    cub1.setL(10);
    cub1.setW(10);
    cub1.setH(10);

    //计算面积
    cout << "cub1的面积" <<cub1.gets() << endl;

    //计算体积
    cout << "cub1的体积" <<cub1.getc() <<endl;

    Cub cub2;
    cub2.setL(10);
    cub2.setW(10);
    cub2.setH(10);

    //全局比较
    if(comparecub1(cub1,cub2)==true)
    {
        cout << "相等" << endl;
    }
    else
    {
        cout << "不相等" <<endl;
    }

    Cub cub3;
    cub3.setL(10);
    cub3.setW(20);
    cub3.setH(10);
    //局部比较
    if(cub3.conparecub2(cub1)==true)
        cout << "相等" << endl;
    else
        cout <<"不相等"<<endl;

    return 0;
}

运行结果:
在这里插入图片描述案例三、点和圆的关系
设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。 假如 圆心座标为 x0, y0, 半径为 r,点的座标为 x1, y1: 1)点在圆上:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) == rr 2)点在圆内:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) < rr 3)点在圆 外:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) > r*r

#include <iostream>

using namespace std;
class Point//设计点的类
{
private:
    int m_x;
    int m_y;

public:
    void setX(int x=0)
    {
        m_x = x;
    }

    void setY(int y=0)
    {
        m_y = y;
    }

    int getX(void)
    {
        return m_x;
    }

    int getY(void)
    {
        return m_y;
    }


};
class Circle//设计圆的类
{
private:
    Point m_p;
    int m_r;


public:
    void setR(int r)
    {
        m_r = r;
    }

    int getR(void)
    {
        return m_r;
    }

    //设置圆心
    void setPoint(int x,int y)
    {
        m_p.setX(x);
        m_p.setY(y);
    }
    Point getPoint(void)
    {
        return m_p;
    }

    //判断点与圆的关系
    void compareCircle(Point &ob)
    {
        int distance =(ob.getX()-m_p.getX())*(ob.getX()-m_p.getX())+(ob.getY()-m_p.getY())*(ob.getY()-m_p.getY());
        
        if( distance >( m_r*m_r ))
            cout << "点在圆外"<<endl;
        else if( distance ==( m_r*m_r ))
            cout << "点在圆上"<<endl;
        else
            cout << "点在圆内"<<endl;

    }


};

int main(int argc, char *argv[])
{
    //实例化一个点
    Point point;

    point.setX(15);
    point.setY(15);

    //实例化一个圆的对象
    Circle circle;
    circle.setR(10);
    circle.setPoint(20,20);

    //判断点与圆的关系
    circle.compareCircle(point);
    return 0;
}

运行结果:
在这里插入图片描述

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