如何解决非引用参数
如果我有此代码:void Foo(aBasicType aIn) //Where aBasicType is int,char etc.
{
//...
}
既然它要被复制,将它设为const aBasicType
有什么意义吗?我问的原因之一是因为我已经在第三方代码中看到它,并且想知道是否有我不知道的东西。
解决方法
如果您知道函数在执行过程中不需要修改其值,则将其声明为“ 2”不会有任何伤害。
请注意,当参数按值传递时,更改其参数的函数应该很少见。
声明变量
const
可以阻止您编写if (aIn = someValue)
。
,我有时(不经常)这样做,因为当人们倾向于就地修改aIn
而不是制作另一个副本时,但是该方法依赖于aIn
始终保持不变。但是,这往往是一个接近的电话。
,原因是信息性的:当在赋值的左侧看到值传递的参数时,您希望编译器警告/错误。
在lib上看到它有点麻烦,因为它们的读者可能不及C或C ++上的“消息灵通”(两种语言都相同)。
,这将使该函数的值const
,以与在函数顶部声明常量相同的方式可能有用。
,不,将const添加到标量按值调用参数是没有意义的,只会造成混乱。
,我更喜欢在输入参数中添加const限定符,而不考虑参数传递方法(按值,按指针还是按引用)。因此const参数只是表示\“输入参数\”,而非const参数表示\“输出参数\”(或者很少是inout参数)。我想这样的约定会使代码更易于理解,但是当然,这取决于口味。
,我想我可以这样简单得多。当“ 8”不是模板参数时:
签名中的“ 9”是对呼叫者的保证
功能和功能实现者的约束。
const footype
只是对
实现者,与调用者无关。
当“ 8”是模板参数时,则只能针对各个模板实例测试规则。
顺便说一句,如果您看到const约束,则所连接的代码更容易阅读,因为代码可以执行的操作受到很大的限制。这是为什么C ++比C#或Java更易于阅读的众多原因之一。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。