C++找对象的季节——三角形类(内置函数+多文件组织)

萌萌的代码君奉上!

首先是triangle.h:

#ifndef TRIANGLE_H_INCLUDED
#define TRIANGLE_H_INCLUDED
class Triangle
{
public:
    inline void setA(double);
    inline void setB(double);
    inline void setC(double);
    inline double getA();
    inline double getB();
    inline double getC();
    double perimeter();
    double area();
    bool isTriangle();
private:
    double a,b,c;
};
double Triangle::getA()
{
    return a;
}
double Triangle::getB()
{
    return b;
}
double Triangle::getC()
{
    return c;
}
void Triangle::setA(double x)
{
    a=x;
}
void Triangle::setB(double y)
{
    b=y;
}
void Triangle::setC(double z)
{
    c=z;
}
#endif // TRIANGLE_H_INCLUDED
大家是否看到在头文件中包含了函数的定义呢?一般函数定义都是包含在源文件里面的,可为什么会在头文件里呢?

答案是:大家仔细看看就会看出来所有在头文件里面定义的函数都是传说中的内置函数,如果在源文件中定义内置函数,那么编译器会告诉你各种warning,如下:


作为有着轻微强迫症的人,虽然一时半会看不懂这些warning啥意思,但是总感觉很不舒服,而如果把这些内置函数放在头文件中定义就不会出现这样的情况,所以就这么做了,不知道是否符合规则或约定。

然后是define.cpp:

#include <cmath>
#include "triangle.h"

bool Triangle::isTriangle()
{
    if(a+b<=c||a+c<=b||b+c<=a)
        return false;
    else
        return true;
}
double Triangle::perimeter()
{
    return a+b+c;
}
double Triangle::area()
{
    double p=(a+b+c)/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}
如同大家看到的,这里面并没有那些内置函数的定义。

最后是main:

#include <iostream>
#include "triangle.h"
using namespace std;
int main()
{
    Triangle tri1;
    double x,y,z;
    cout<<"输入三角形的三边:";
    cin>>x>>y>>z;
    tri1.setA(x);
    tri1.setB(y);
    tri1.setC(z);
    if(tri1.isTriangle())
    {
        cout<<"三边为:"<<tri1.getA()<<'\t'<<tri1.getB()<<'\t'<<tri1.getC()<<endl;
        cout<<"三角形周长为:"<<tri1.perimeter()<<'\t'<<"面积为:"<<tri1.area()<<endl;
    }
    else
        cout<<"不能构成三角形。"<<endl;
    return 0;
}
而运行结果如下:


我真是太机智了用了3 4 5这种经典的勾股定理三边长,这样就算是一眼也能看出来数据的对与错。嗯……是不是加个5 12 13 更好呢?


突然发现周长和面积在数据上是相等的呢!

虽然只用了一篇博客,但是我感觉这样子相当的精炼,而且测试数据的选择也很重要。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值