int上的一元+运算符

leo*_*n22 1 c++ unary-operator

我有以下声明,它编译:

static unsigned char CMD[5] = {0x10,0x03,0x04,0x05,0x06};

int Class::functionA(int *buflen)
{
    ...
    int length = sizeof(CMD); + *buflen; // compiler should cry! why not?
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么我没有编译错误?

Xeo*_*Xeo 8

+ *buflen;
Run Code Online (Sandbox Code Playgroud)

是一元运算+符的有效应用int&,它基本上是一个noop.就像你写这个一样:

int i = 5;
+i; // noop
Run Code Online (Sandbox Code Playgroud)

这里什么一元operator+实际上确实为整数,并在这里你几乎可以用它做什么.