我正在实现一个类似于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
    

    10-08 07:11