比较C++数组元素引用的两种形式a[0]与0[a]

比较C++数组元素引用的两种形式a[0]与0[a]

(转载请注明来源于金庆的专栏)

对于一个数组ar,求其最外层的维数。
C语言当中惯用的是 sizeof(ar) / sizeof(ar[0]),
可是在stlsoft库中是 sizeof(ar) / sizeof(0[ar])。

以前从没见过数组元素引用使用这样的形式:0[ar],能行吗?

ar[0]与0[ar]效果是一样的,其实是求地址,但是为什么用0[ar]呢?
生僻的用法降低了可读性。是不是有什么优点呢?
都是编译期计算,应该没有性能上的差别。 

后来翻看了《Imperfect C++》一书,找到了这样做的原因。

0[ar]保证输入的ar是一个数组,而不是一个定义了operator []() 运算符的类实例。
例如ar是一个std::map时,C语言中的惯用法会得出错误的结果,
但是用0[ar]这样的形式,会编译出错,防止用户错误的使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值