而不是平常
void foo (void ) {
cout << "Meaning of life: " << 42 << endl;
}
Run Code Online (Sandbox Code Playgroud)
C++11 允许是另一种选择,使用追踪回报
auto bar (void) -> void {
cout << "More meaning: " << 43 << endl;
}
Run Code Online (Sandbox Code Playgroud)
在后者 - 什么是auto代表?
另一个例子,考虑功能
auto func (int i) -> int (*)[10] {
}
Run Code Online (Sandbox Code Playgroud)
同样的问题,auto这个例子中的含义是什么?
Ric*_*III 17
通常,autoC++ 11中的new关键字表示表达式的类型(在这种情况下是函数的返回类型)应该从表达式的结果中推断出来,在这种情况下,是在表达式之后发生的->.
没有它,函数将没有类型(因此不是函数),编译器最终会混淆.
Aja*_*jay 16
考虑一下代码:
template<typename T1, typename T2>
Tx Add(T1 t1, T2 t2)
{
return t1+t2;
}
Run Code Online (Sandbox Code Playgroud)
这里的返回类型取决于表达式t1+t2,而表达式又取决于Add调用的方式.如果你把它称为:
Add(1, 1.4);
Run Code Online (Sandbox Code Playgroud)
T1会是int,而且T2会double.结果类型现在是double(int + double).因此Tx应该(必须)使用auto和指定->
template<typename T1, typename T2>
auto Add(T1 t1, T2 t2) -> decltype(t1+t2)
{
return t1+t2;
}
Run Code Online (Sandbox Code Playgroud)
你可以在我的文章中阅读它.
| 归档时间: |
|
| 查看次数: |
8696 次 |
| 最近记录: |