第1个回答 2011-12-05
这些我也是最近才弄明白,
之前我也知道#include "xx.cpp"不好, 但是有时多个文件都#include "a.h"还是会报错,告诉我重复编译了, 现在想清楚了
首先, 所有.cpp文件都不用被包含, 对它们系统是会分别编译的, 假设你自己写了一些字符串操作的函数, 放在MyString.h中, 而有两个cpp文件中有#include "MyString.h", 这时就会出错, 因为相同的函数被编译了两次.
正确的做法是MyString.h中只写 函数的声明, 新建第三个源文件MyString.cpp, 把函数的实现写在里面. 这些cpp文件里都加上#include "MyString.h",这样这些函数就没有被重复编译(只是多次被声明了).
总之, 头文件(.h)内只写函数声明,这样才能让里面的函数被多个源文件调用
第2个回答 2011-12-05
#include<iostream>
#include"math.h"
using namespace std;
class trigon
{
private:
float x,y,z;
public:
trigon(float a,float b,int c){x=a;y=b;z=c;}
trigon():x(0),y(0),z(0){}
~ trigon(){};
float Getgrith(){return x+y+z;}
float Getarea()
{
float s;
s=(x+y+z)/2;
return sqrt(s*(s-x)*(s-y)*(s-z));
}
};
void main()
{
float a,b,c;
char i='a';
while(1){
cout<<"输入三角形的三条边";
cin>>a>>b>>c; //三个数据之间要空格
if((a+b)>c&&(a+c)>b&&(b+c)>a)
{
trigon C(a,b,c);
cout<<"三边分别为"<<a<<" "<<b<<" "<<c<<"的三角形的周长面积如下:"<<endl<<"周长:"<<C.Getgrith()<<endl<<"面积"<<C.Getarea()<<endl;
}
else
{
cout<<"你输入的三条边不能构成一个三角形"<<endl;
}
cout<<"退出请输入q"<<endl;
cin>>i;
if(i=='q')
{
break;//退出循环
}
}
trigon C;
cout<<"默认的三角形的三边分别为0 0 0的三角形的周长面积如下:"<<endl<<"周长:"<<C.Getgrith()<<endl<<"面积"<<C.Getarea()<<endl;
}