4

私が名前を挙げない C++ コンパイラでは、int *p = &42; というリテラルのアドレスを取得できます。

明らかに 42 は右辺値であり、ほとんどのコンパイラはこれを拒否しています。

なぜコンパイラはこれを許可するのでしょうか? 自分の足を撃つ以外に、これで何ができますか?

4

5 に答える 5

0

事実上、コンパイラは値42の整数のアドレスでポインタを初期化する必要があります。

では、なぜ、一部のコンパイラでは、リテラルのアドレスを直接取得できないのでしょうか。

int* ptr = &10;

参照:

int& ref = 10;

ただし、ポインタとほぼ同じです...

于 2010-02-11T19:13:28.340 に答える
0

C++0x の右辺値参照に関連するものを見つけました -- セマンティクスを移動 http://www.artima.com/cppsource/rvalue.html

于 2009-07-24T07:09:35.830 に答える