什么使 c++ 函数成为空类型与非空类型?

时间:2021-02-13 02:30:43

标签: c++

是什么决定了一个函数是 void 类型还是非 void 类型?仅仅是函数体中存在关键字 return 吗?资源通常说 non-void types 返回一个值。为什么以及何时应该返回一个值?

例如,更喜欢下面的代码(code 2),我不需要“返回”任何东西;但该程序运行良好。

code 2 与我返回值的 code 1 进行比较。最终,它达到了同样的目的。进一步扩展这个问题,是什么使 greet()code 3 的返回类型无效?

所以我再问一句:是什么决定了一个函数是void类型还是非void类型?仅仅是函数体中存在关键字 return 吗?

代码 1:

#include <iostream>
#include <string>
using namespace std;


int dispNumber(int n1) {
    return n1;
}

int main() {
    int n1 = 22;
    cout << dispNumber(n1);
    return 0;
}

代码 2:

#include <iostream>
#include <string>
using namespace std;


void dispNumber(int n1) {
    cout << n1;
}

int main() {
    int n1 = 22;
    dispNumber(n1);
    return 0;
}

代码 3

#include <iostream>
using namespace std;

    void greet(string n1) {
    cout<<"My name is " << n1;
}

int main() {

    string n1 = "Fred";
    greet(n1);


    return 0;
}

1 个答案:

答案 0 :(得分:2)

<块引用>

为什么以及何时应该返回值?

具有某些结果值的函数,然后该函数通常应将输出返回给调用者。您可能从数学中熟悉的几乎所有函数都是这样的函数。

想象一下,例如一个将两个输入整数相加的函数。这样的函数有一个结果:输入的总和。该函数应该将该值返回给调用者。

<块引用>

是什么决定了一个函数是 void 类型还是非 void 类型?

函数类型是非空类型。唯一的 void 类型是 void,它不是函数类型。

<块引用>

是什么让代码 3 中的 greet() 的返回类型无效?

函数声明的第一部分是返回类型:

void greet(string n1) {
^^^^

因为函数的返回类型声明为void,所以返回类型为void