我正在实现一个类似于boost::shared_ptr
的模板指针包装器。
我有一个指向整数ptrInt
的指针。
我要执行的操作:将整数ptrInt指向增量。
我的初始代码是:*ptrInt ++;
,尽管我也使用(*ptrInt) ++;
尝试了相同的代码
但是,显然似乎并没有达到我的预期。
最后,我使用*ptrInt += 1;
使其工作了,但是我问自己:
*ptrInt ++;
到底做什么? *ptrInt += 1;
的更优雅的解决方案? 最佳答案
*p++ // Return value of object that p points to and then increment the pointer
(*p)++ // As above, but increment the object afterwards, not the pointer
*p += 1 // Add one to the object p points to
最后两个都增加对象,所以我不确定为什么您不认为它起作用。如果将表达式用作值,则最终形式将在递增后返回该值,而其他形式则在此之前返回该值。
x = (*p)++; // original value in x
(*p)++;
x = *p; // new value in X
或者
x = ++*p; // increment object and store new value in x