C++第4周项目3 - 多文件组织程序

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895【项目3 - 程序的多文件组织】当程序规模变大后,一个程序用多个文件组织,便于组织生产。这样,不必每次都重复对所有代码进行编译,而只需编译一

课程首页地址: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;
	}
	else
		cout<<"不能构成三角形"<<endl;
	system("pause");
	return 0;
}



目录
相关文章
WK
|
10天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
32 1
|
1月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
91 21
|
28天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
228 3
|
1月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
19 0
Linux c/c++文件的基本操作
|
2月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
39 3
|
2月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
43 2
|
1月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
42 0
|
1月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
63 0
|
2月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
28 0