我知道对于空指针不允许使用指针算术。但是想象一下我有这样的事情:
class MyArray {
int *arrayBegin; // pointer to the first array item, NULL for an empty array
unsigned arraySize; // size of the array, zero for an empty array
public:
int *begin() const { return arrayBegin; }
int *end() const { return arrayBegin + arraySize; } // possible? (arrayBegin may be null)
是否可以(允许)进行上述end()
实现?还是必须具有:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
避免使用nullptr进行指针算术,因为arrayBegin
对于空数组为null(尽管arraySize
在这种情况下也为零)?
我知道可以存储int *end;
而不是,unsigned size;
并且可以将大小计算为end-begin
-,但是出现相同的问题:是否可以计算nullptr - nullptr
?
我特别喜欢标准参考书。