C++第4周项目3 - 多文件组织程序
来源:互联网 发布:linux下好用的输入法 编辑:程序博客网 时间:2024/04/28 05:41
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895
【项目3 - 程序的多文件组织】当程序规模变大后,一个程序用多个文件组织,便于组织生产。这样,不必每次都重复对所有代码进行编译,而只需编译一次即可。把编译后所形成的目标文件保存起来,以后在需要时把它调出来直接与程序的目标文件相连接即可。
C++中一种常用的做法是,独立出一个头文件来。正确使用头文件带来的好处包括:支持代码的局部单独编译,尤其对类及成员函数声明;保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。使用头文件的时候,头文件只用于声明,而不是定义,头文件一般含有支持分别编译所需的类定义及变量和函数的声明。另外,一些const对象要定义在头文件中。类的成员函数定义在头文件中只有一个例外,那就是内置(inline)成员函数需要定义在头文件中。
下面是本项目的要求:
利用多文件组织,完成项目2。其中,项目包括3个文件:
主文件: main.cpp,用于定义main()函数
头文件: triangle.h,头文件
类定义文件: triangle.cpp,用于定义类Triangle
注意,3个set函数和3个get函数是内置成员函数,其他函数不作为内置函数。
参考解答(在看参考解答时,注意每个文件中#include部分的写法):
头文件Triangle.h
class Triangle{public:void setA(double x){a=x;}; //内置函数要定义在头文件中void setB(double y){b=y;};void setC(double z){c=z;};double getA(){return a;}double getB(){return b;}double getC(){return c;}bool isTriangle();//判断是否构成三角形double perimeter(void);//计算三角形的周长double area(void);//计算并返回三角形的面积private:double a,b,c; //三边为私有成员数据};
头文件Triangle.h还可以如下所示
class Triangle{public:inline void setA(double x); //内置函数在类内声明inline void setB(double y);inline void setC(double z);inline double getA();inline double getB();inline double getC();bool isTriangle();//判断是否构成三角形double perimeter(void);//计算三角形的周长double area(void);//计算并返回三角形的面积private:double a,b,c; //三边为私有成员数据};inline void Triangle::setA(double x){a=x;}; //内置函数在类外定义,但一定在头文件中inline void Triangle::setB(double y){b=y;};inline void Triangle::setC(double z){c=z;};inline double Triangle::getA(){return a;}inline double Triangle::getB(){return b;}inline double Triangle::getC(){return c;}
用于定义类的triangle.cpp
#include "Triangle.h"#include <Cmath>bool Triangle::isTriangle(){return (a+b>c&&a+c>b&&b+c>a);}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.cpp
#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()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;}elsecout<<"不能构成三角形"<<endl;system("pause");return 0;}
- C++第4周项目3 - 多文件组织程序
- 2015-第3周项目3-程序的多文件组织
- 第3周项目3-程序的多文件组织
- 第3周项目3 程序的多文件组织
- 第3周项目3-程序的多文件组织
- 第3周项目3—程序的多文件组织
- 第11周项目3程序的多文件组织
- 第11周项目3-程序的多文件组织
- 第11周项目3-程序多文件组织
- 第11周项目3-程序的多文件组织
- 第11周 项目3-程序的多文件组织
- 第11周项目3程序的多文件组织
- 第11周项目3-程序的多文件组织
- 第11周项目3-程序的多文件组织
- 第11周项目3-程序的多文件组织
- 第11周项目3 程序的多文件组织
- 第11周项目3-程序的多文件组织
- 第11周 项目3 程序的多文件组织
- C++第4周项目2 - 三角形类2
- uva10282 - Babelfish(字典)
- codeforces 283,284(Round #174)题解
- QT 学习笔记 (一) 环境安装
- 做了个超级简单的mysql数据库demo
- C++第4周项目3 - 多文件组织程序
- 仿Iphone从屏幕底部弹出半透明的PopupWindow
- makefile 指定库的路径
- C# 委托(delegate) 的小应用
- Java之冒泡排序
- update algirothm
- hdu 2036 计算几何求面积
- java之选择排序
- 快速构建Windows 8风格应用36