C++是否支持类似C#的箭头运算符单行方法写法?
C++中实现类似C#表达式体方法的单行写法
你在C#里用的这种带=>的单行方法叫做表达式体方法。
C++里虽然没有直接照搬=>的语法,但完全可以实现等效的单行写法,分几种场景:
普通函数(成员/非成员):可以直接把代码压缩成单行,写法如下:
int AddNums(int a, int b) { return a + b; }这和你想要的单行实现逻辑完全一致,只是保留了大括号。
常量表达式函数(C++11及以后):如果你的函数满足常量表达式要求(比如逻辑简单无副作用),可以用
constexpr修饰,同样支持单行:constexpr int AddNums(int a, int b) { return a + b; }匿名函数(Lambda,C++11及以后):这是最接近C#表达式体写法的形式,支持箭头语法(用于指定返回类型,也可省略让编译器自动推导):
// 指定返回类型 auto AddNums = [](int a, int b) -> int { return a + b; }; // 自动推导返回类型(C++11起对单return语句支持,C++14起更宽松) auto AddNums = [](int a, int b) { return a + b; };这种Lambda表达式定义的函数可以直接通过变量名调用,和普通函数用法几乎一致。
另外补充个小细节:你写的C#表达式体方法里多了return,正确的写法应该是int AddNums(int a, int b) => a + b;,表达式体方法会自动把箭头后的表达式作为返回值,不需要显式写return。
内容的提问来源于stack exchange,提问作者Mav
相关产品推荐
相关产品推荐

