0%

C++:未规定返回值类型的函数的返回值类型是什么?

先说结论:

当函数的返回值类型未规定时,默认为int类型,并且此时的函数可以通过return返回值,返回值的类型需要能够转换到int。这个规则适用于普通函数和成员函数。

写代码的时候发现了一个很有意思的事情,当我没有规定函数返回值类型的时候,编译和运行都是不会出错的。

1
2
3
4
5
6
7
8
9
func () {
cout << "This is a func()" << endl;
}

int main () {
cout << typeid(func()).name(); // #include <typeinfo>

return 0;
}

同时可以获得func()的返回值是一个i,即int类型。

尝试在func()函数中使用return语句规定返回值:

1
2
3
func() {
return 'a';
}

得到的返回值是a的ASCII编码97。

因此可以确定返回值类型默认为int,并且会自动将非int类型转化为int

返回不可以转为int类型的数据会报错,比如string

同时经过测试,类的成员函数的返回值类型也满足上述情况。