C++实现参数in、out、ref语义

本文探讨如何在C++中模仿C#的in、out、ref参数语义,通过宏定义简化函数参数声明,使得代码更清晰无歧义。作者通过实验展示了如何使用const修饰来实现类似效果,并比较了与C#原生语义的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stl是一个好东西,但是一直唯一一点不爽的就是长长const std::string&,const std::vector<int>&的函数参数。

void test(const std::string& str, std::vector<int>& vec, std::vector<int>& outvec)
{
    // TODO ...
    // Do something...
}

这上面就是一个典型的函数声明,不仅写起来累,看起来也累。

你说不用const&行不行呢,其实也不是不行。

但用c++一般都会有极限优化的心态作祟,再说了用值传递肯定会被一邦人鄙视的!!

那少写的const行不行呢,速度一样了,就多写了&而已。

是,速度是达到了,但这个函数调用起来总是让不放心呀,万一你给我改了咋整呀!!

唉,到底发明c++的人是咋想的呢??


自从我知道c#的写法,我一直想把c#的ref、in、out的语义引入到c++里面。

虽然一直觉得c#一般般,c++才是亲儿子,但从语法上,书写上,真的甩c++几条街。

比如下面这段代码

public void Test(in string str, ref Array<int> array, out List<int> list)
{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值