volatile 型へのポインターを cout しようとすると、通常は cout が文字列を出力すると予想される volatile char ポインターであっても、代わりに単に '1' を取得します (ポインターが null でないと仮定します)。出力ストリーム operator<< は揮発性ポインターに特化したテンプレートだと思いますが、私の質問はなぜですか? この動作の動機となるユースケースは何ですか?
コード例:
#include <iostream>
#include <cstring>
int main()
{
char x[500];
std::strcpy(x, "Hello world");
int y;
int *z = &y;
std::cout << x << std::endl;
std::cout << (char volatile*)x << std::endl;
std::cout << z << std::endl;
std::cout << (int volatile*)z << std::endl;
return 0;
}
出力:
Hello world
1
0x8046b6c
1