看下面这个类Fun ,其中包括了构造函数和类型强制转换函数。
1. #include
2. #include
3. #include "fun.h"
4. using namespace std;
5. int main()
6. {
7. Fun f;
8. cout << f << endl;//输出5
9. printf("%d\n", f);//输出3
10. printf("$d\n", (int)f);//输出5 11. return 0; }
不难看出,<<的调用将第二个参数强制转换为int,但是printf的%d只是读取了后面参数的前32位,解析成为int。如果需要用printf并且调用类的强制转换方法,需要显式的将对象进行类型的强制转换。