在学习c中我是习惯于在void函数里增加return,在学习c++时,看到很多老师在定义类的时,类中的void函数不进行添加return,故而引发思考,是否增加return和不增加return有什么区别?

函数末尾的return;

1
2
3
4
5
6
7
8
9
void ethan1() {
// 一些代码
return; // 显式返回
}

void ethan2() {
// 一些代码
// 隐式返回(没有return语句)
}

在函数末尾时,两者完全等价。编译器会在 void 函数的末尾自动插入一个隐式的 return;

提前返回的情况

1
2
3
4
5
6
7
8
void ethan1(int value) {
if(value > 0)
{
return;//必须写,用于提前退出
}
//正常处理代码
//函数末尾可以省略return
}

当需要提前退出函数时,必须使用 return;

总结:根据以上两个案例,在函数的尾部有没有return;都是一样,在提前退出函数中return;是必须使用的。可根据个人习惯以及团队的编码规范进行是否写入return;

写入的优点:

  • 明确表示函数结束,提高代码清晰度
  • 与其他返回类型的函数保持一致
  • 方便后续添加提前返回的逻辑

写入的缺点:

  • 增加冗余代码
  • void 函数没有返回值是显而易见的
  • 不简洁明了