新手求助C++(菜鸟问题)
刚学c++,才学到类与对象,做了个求正方体的面积体积的程序,但是我不明白void seta()函数究竟有什么作用
,我的两种代码,第一种就是有这个函数的,第二种就是注释掉的,直接调用计算的函数,但是结果都是一样的,求高手详细讲解一下,谢谢。[color=#00FF00][/color]
class point
{
public:
void seta(double x)
{
X = x;
}
double s(double X)
{
return X*X;
}
double v(double X)
{
return X*X*X;
}
private:
double X;
};
# include<iostream>
using namespace std;
int main(void)
{
double a;
point p;
cout<<"enter a:";
cin>>a;
p.seta(a);
cout<<"边长为"<<a<<"的"<<"面积是:\t"<<p.s(a)<<endl;
cout<<"边长为"<<a<<"的"<<"体积是:\t"<<p.v(a)<<endl;
return 0;
}
class point
{
public:
//void seta(double x)
//{
//X = x;
//}
double s(double X)
{
return X*X;
}
double v(double X)
{
return X*X*X;
}
//private:
//double X;
};
# include<iostream>
using namespace std;
int main(void)
{
double a;
point p;
cout<<"enter a:";
cin>>a;
//p.seta(a);
cout<<"边长为"<<a<<"的"<<"面积是:\t"<<p.s(a)<<endl;
cout<<"边长为"<<a<<"的"<<"体积是:\t"<<p.v(a)<<endl;
return 0;
}
[解决办法]
面向对象讲的是将一切东西抽象成对象,比如立方体,有自己的属性边长,根据边长可以得出自己的底面积,体积什么的,你的第一个类应该这样写
- C/C++ code
class Cube{public:Cube(double x){X = x;}double s(){return X*X; //X是Cube对象的属性 }double v(){return X*X*X;}private:double X;};
[解决办法]
1,你的函数都写成了内联函数的形式。然后里面当然可以使用类的数据成员。
2,俩种类说来,就是一个有个设置边长的函数,一个没有。则第一个更人性化一点。当然你不设置,直接通过函数传参来实现求面积也可以,但是没有就貌似显得该函数功能更强大。但其实不然,编程尽量做到一个函数实现一个功能。
3,一般来说内联函数都写些简单短小的代码。比如set,get函数。还有一些经常会调用的函数。
4,其他功能的函数最好与自己的类定义分开去写。
我给你改了下你看是否能解决你的矛盾。
class point
{
public:
//设置边长的函数
void seta(double x)
{
X = x;
}
//求面积的函数
double s()
{
return X*X;
}
//求体积的函数
double v()
{
return X*X*X;
}
private:
double X;
};
int _tmain(int argc, _TCHAR* argv[])
{
double a;
point p;
cout<<"enter a:";
cin>>a;
p.seta(a);
cout<<"边长为"<<a<<"的"<<"面积是:\t"<<p.s()<<endl;
cout<<"边长为"<<a<<"的"<<"体积是:\t"<<p.v()<<endl;
return 0;
}
[解决办法]
这个函数是做初始化的作用。