強制変換とメモリ
コンストラクション関数とタイプ強制変換関数を含むこのクラスFunを見てください.
次のプログラムを実行
<<の呼び出しは2番目のパラメータを強制的にintに変換するがprintfの%dは後のパラメータの上位32ビットのみを読み出し,intと解析する.printfを使用してクラスの強制変換方法を呼び出す必要がある場合は、オブジェクトを明示的にタイプの強制変換する必要があります.
- class Fun
- {
- int x;
- public:
- Fun(){x = 3;}
- operator int(){return 5;}
- };
次のプログラムを実行
- #include <iostream>
- #include <cstdio>
- #include "fun.h"
- using namespace std;
- int main()
- {
- Fun f;
- cout << f << endl;// 5
- printf("%d
", f);// 3
- printf("$d
", (int)f);// 5
- return 0;
- }
<<の呼び出しは2番目のパラメータを強制的にintに変換するがprintfの%dは後のパラメータの上位32ビットのみを読み出し,intと解析する.printfを使用してクラスの強制変換方法を呼び出す必要がある場合は、オブジェクトを明示的にタイプの強制変換する必要があります.