前言
例子1分别用面向对象
面向对象和面向过程编程思想来求圆的面积和周长
面向对象和面向过程编程思想
函数的调用初学者注意事项
分别用面向对象
面向对象和面向过程编程思想来求圆的面积和周长
程序1
//面向过程编程
#include <iostream>
using namespace std;
float const p = 3.14;//静态全局变量
float area(float r1)//定义一个求面积函数
{
float s;
s = p * r1 * r1;
return s;
}
float perimeter(float r2)//定义一个求周长函数
{
float L;
L = 2 * p * r2;
return L;
}
//主函数实现
int main()
{
float r;
cout << "输入圆半径" << endl;
cin >> r;
cout << "面积为" << area(r) << endl; //以函数来驱动
cout << "周长为" << perimeter(r) << endl;
return 0;
}
错误点,初学者会忽视调用函数的方法
就是函数调用要带上参数,即如下例所示:
```cpp
cout << "面积为" << area << endl;
cout << "周长为" << perimeter << endl;
/面向对象编程
class circle//先明确有那些类,这里要定义一个圆类
{
public:
void Set_R(float r)
{
cout << "输入半径" << endl;
cin >> r;
M_r = r;
}
float get_R()//因为M_r是私有成员变量所以要定义一个公开的成员方法来在类的外部得到或者访问M_r的值
{
return M_r;
}
float area()//定义一个求面积函数
{
float s=0;
float p1 = 3.14f;
s = p1 * M_r * M_r;
return s;
}
float perimeter()//定义一个求周长函数
{
float L;
float p2 = 3.14f;
L = 2 * p2 * M_r;
return L;
}
void print_f()//定义一个打印函数
{
cout << "面积是" << area() << endl;
cout << "周长是" << perimeter() << endl;
}
private:
float M_r;
};
int main()
{
circle A1;
A1.Set_R(0);//因为定义的函数需要一个输入参数,所以这里在调用的时候也要给一个参数否者会无法编译,这里可以随便给因为这个函数会重新赋值
A1.area();
A1.perimeter();//对象来驱动函数
A1.print_f();
return 0;
}
//*错误示范*
int main()
{
circle A1;
A1.Set_R(0);
A1.area(A1.get_r());
A1.perimeter(A1.get_r());
A1.print_f();
return 0;
}
如果用这段代码替代上面的,会发现系统报错显示(“E0140 函数调用中的参数太多” )",因为你在定义 float perimeter()函数和float area()函数的时候并不需要参数,
如果你再定义的时候改成;
float area(int R)//定义一个求面积函数
{
float s=0;
float p1 = 3.14f;
s = p1 * M_r * M_r;
return s;
}
float perimeter(int R)//定义一个求周长函数
{
float L;
float p2 = 3.14f;
L = 2 * p2 * M_r;
return L;
}
//那么你在调用的时候就要传参
//即
```cpp
A1.area(A1.get_r());
A1.perimeter(A1.get_r());
//或者
A1.area(r);
A1.perimeter(r);
总结
错误点,初学者会忽视调用函数的方法
就是函数调用要带上参数,即如下例所示:
cout << "面积为" << area << endl;
cout << "周长为" << perimeter << endl;