请解释一下((A*)0)->b()什么意思
((A*)0)-> b()是什么意思?其中A为一个类,b为类A的一个成员函数,这句话的意思是不是把内存地址0转换成A的指针?为何可以这样用?请解释仔细一些,谢谢!
[解决办法]
内存地址0转换成A的指针
只要 b不使用成员变量是可以的.
[解决办法]
如果b()没有访问到A的成员变量,可以这么用
具体可以看看这个贴子
http://community.csdn.net/Expert/topic/5526/5526033.xml?temp=.7869226
[解决办法]
其实这种用法就是调用他的函数而已
和全局函数一样
[解决办法]
0就当作是一个地址,前面家(A*)就是将0地址强制转换成A指针,再执行函数b
[解决办法]
本例是理解编译过程的做法。
例如,对于这段代码:
class A
{
......
R b(T); // R是返回值类型,T是b的参数类型,这里以单参数为例
......
};
编译后成为:
R A_b(A*, T); // 此处A_b指代编译器定义的内部名称
因此,((A*)0)-> b()的编译结果是 A_b(0)。
如果是
A a;
a.b();
则后一句就是A_b(&a) 。