cout<

cout<<tl.d<<endl;//为什么输出是1;
cout<<tl.d<<endl;//为何输出是1
小问题

------解决方案--------------------
引用:
t1.d 是一个成员函数指针, cout 的 operator<< 没有重载对成员函数指针的输出. 所以它会发生转型. 而成员函数指针只能转换成 bool 才允许. 所以, 实际上输出的是个 bool 值.

+1 
想要输出要直接调用函数 就是cout<<tl.d()<<endl; 这个是函数调用, 要区别于函数指针调用噢!
------解决方案--------------------
引用:
我也想知道你怎么能输出1
我编译输出是3啊

晕看成cout<<t.a<<endl;了
------解决方案--------------------
引用:
Quote: 引用:

t1.d 是一个成员函数指针, cout 的 operator<< 没有重载对成员函数指针的输出. 所以它会发生转型. 而成员函数指针只能转换成 bool 才允许. 所以, 实际上输出的是个 bool 值.

对象也可以看成一个指针吗?cout<<tl.d<<endl;//为何输出是1

对象看成一个指针是什么意思?
标准的成员函数指针写法是 &A::d,  t1.d 看编译器, 支持就支持了.