首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手C++(初学者有关问题)

2012-05-10 
新手求助C++(菜鸟问题)刚学c++,才学到类与对象,做了个求正方体的面积体积的程序,但是我不明白void seta()

新手求助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;
}

[解决办法]
这个函数是做初始化的作用。

热点排行