C++基础系列の函数

  • 2020 年 1 月 14 日
  • 筆記

C++基础系列の函数

前几天我们讲了一下C++中的函数,不过还有一部分没有讲完,今天我们继续讨论一下。如果你没有看过那篇文章,可以点击右边的链接前往:C++の函数

返回值

上一篇文章我们主要说了函数的参数列表,那么函数除了有参数列表外,还有另一个要素,返回值。如果有返回值的话,又返回我们想要返回的数据,如果没有的话就用void。这个跟C中一样,没什么需要强调的,那么有的的朋友可能会想到我们之前介绍过引用和指针了,它们可以作为函数的返回值吗?

这里需要做个区分,如果引用或者指针在函数体外,也就是说不是这个函数的局部变量的话,它们是可以作为返回值的,但是如果引用或指针是在这个函数中定义的话,也就是局部变量的话,就不能作为函数的返回值。

原因很简单,因为函数作为最小的执行单元,在执行完后会被释放掉,函数中所有申请的非静态资源均要被释放,如果这个引用或指针作为返回值的话,是不能将值传出来的。

函数重载

如果朋友们有面向对象编程经验的话,那么一定听说过函数重载这个概念,这个在java中叫方法重载,其实本质上是一样的。所谓函数重载,就是可以在同一个源文件中定义多个函数名相同的函数,但是它们需要有不同的参数列表。我们看一下下面的代码:

void print(const char *cp);  void print(const int *beg, const int *end);  void print(const int ia[], size_t size);  

可以看到上面有三个print函数,但是它们的参数列表不同,代码在调用函数时,编译器可以根据参数列表推断出我们想要调用的函数。

今天的函数部分就到这里,明天我们继续讨论剩下两个比较重要的概念“内联函数”和“函数指针”。