class A{ }; class B{ operator A*() const{ return NULL; } }; void fun(A* p){ } int main(){ B *b = new B; B bb; fun(b); //很明显的ERROR fun(bb); //yes delete b; } 之前不知道怎么了这么无耻的错误都犯了。指针只能是算是一个地址,之前脑子总想着有类型转换,所以直接一个指针进去,结果肯定是大受挫败。只有一个对象才能算是一个有意义的实体,一个指针就只是一个值而已。。。