摘要: 最早是在微博上看到这样一个swap函数。void swap(int& a,int& b){ a = b + 0*(b = a);}那么我也来讨论讨论这样的表达式有什么行为。当然这里是我认为的答案,也不敢保证完全正确,因为C++实在是太复杂了,完全不敢说知道的面面俱到。下面来看这两个C++表达式,a和b都是int类型。a = b + 0 * (b=a); // exp 1a = 1 + 0 * (b=a); // exp 2exp 1就是原来swap函数的实现方法,这个比较明显了。因为C++里面规定了子表达式的计算顺序和side effect的发生顺序是不确定的。另外: &quo 阅读全文
posted @ 2012-08-11 09:39 嗷嗷 阅读(743) 评论(0) 推荐(0) 编辑