基础篇:函数与方法的区别

本文涉及到的语言C、C++、Java

函数的定义

函数是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给他取一个名字。
函数可以带有实际参数或者形式参数,用于指定这个函数执行计算要使用的一个或多个值,而且还可以具备返回值,以表示计算的结果。

函数的组成:

返回值 函数名(输入参数){
执行体}
下面举三个例子:

#include<stdio.h>
int max(int a, int b)
{
    return (a>b?a:b);
}
int main()
{
    int c = max(1,2);
    printf("%d",c);
    return 0;
}
#include<iostream>
using namespace std;
int max(int a, int b)
{
    return (a>b?a:b);
}
int main()
{
    int c = max(1,2);
    cout<<c;
    return 0;
}
public class Hello {
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}

函数的基本特征

函数就是一种封装
函数需要定义
函数不会自动执行,需要被调用才可以执行
函数的定义顺序与调用顺序无关
区分变量名和函数名

函数命名规则

1.与变量命名规则一致,以字母、、_开头 2.可以包含数字、字母、、_
3.区分大小写
4.不能使用关键字和保留字

C++函数中的特性:

C++出具有基本特征外,还具有:

函数参数默认值

注:有参数默认值的函数必须在参数表的最右端
例子:
Void find(int i,int j=10,int k=10);
正确
Void find(int i,int j=1,int k);
错误

#include<iostream>
using namespace std;
void fun(int i,int j=10,int k=90)
{
    cout<<i<<j<<k<<endl;
}
int main()
{
    fun(20);//i=20,j=10,k=90,j和k选取默认值
    fun(20,30);//i=20,j=30,k=90;k选取默认值
    fun(20,30,40);//i=20,j=30,k=40
    return 0;
}
函数重载

在相同定义域内,用同一函数名定义多个函数,参数类型和参数个数不同

#include<iostream>
using namespace std;
int getMax(int a,int b,int c)
{
    int d=a>b?a:b;
    int e=a>c?a:c;
    return (d>e?d:e);
}
double getMax(double x, double y)
{
    return (x>y?x:y);
}
int main()
{
    cout<<getMax(10,20,30)<<endl;
    cout<<getMax(1.2,9.8);
    return 0;
}
内联函数

故事:实验室搬至六楼,小件器件特别多,一同学正一件一件得往六楼搬,老师借给他一个大袋子,这同学一次就把这些小物件搬上了六楼,虽然增加了一个大袋子额重量,却省去了上下六楼100多趟之苦。这个大袋子充当了内联函数的功能。

存在目的:相较执行一般函数,提高程序的运行效率
内联函数与非内联函数的区别:
1.内联函数直接拷贝函数内中的代码区到调用的地方,非内联函数要将程序执行权转到被调函数中,然后再返回到调用它的函数中。
2.同样功能内联函数较非内联函数运行效率高。
3.同样功能内联函数较非内联函数占用内存大。

//在类中定义的成员函数被默认成为内联函数
#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
    void display()
    {
        cout<<"name:"<<name<<endl;
    }
    string name;
};
int main(int argc, char* argv[])
{
    Person person;
    person.name = "Erin";
    person.display();
    return 0;
}
//类外定义的函数用inline指定为内置函数
#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
    inline void display();
    string name;
};
inline void Person::display()
{
    cout<<"name:"<<name<<endl;
}
int main(int argc, char* argv[])
{
    Person person;
    person.name = "Erin";
    person.display();
    return 0;
}
//无内联函数
//既没有在类内定义函数,也没有用inline在类外定义函数
#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
    void display();
    string name;
};
inline void Person::display()
{
    cout<<"name:"<<name<<endl;
}
int main(int argc, char* argv[])
{
    Person person;
    person.name = "Erin";
    person.display();
    return 0;
}

函数与方法的区别

方法和对象相关
函数和对象无关
Java中只有方法、C中只有函数、C++里取决于是否在类中(在类中的是方法、不在类中定义的是函数)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。