我是使用c ++的新手,浏览了一些源代码,我在一个类中找到了该代码。
SDL_Surface *m_srf;
//...
operator SDL_Surface*&()
{
return m_srf;
}
它会重载指针(*)和引用或内存地址(&)运算符吗?
最佳答案
那是一个转换运算符:称为Class::operator Type()
的成员运算符可用于将Class
类型的对象转换为Type
类型的对象。
在这种情况下,它将转换为指向SDL_Surface
的指针的引用。因此,您可以在需要该类型的任何地方使用此类:
void set(SDL_Surface*& s) {s = whatever;} // needs a reference
void do_something(SDL_Surface*); // needs a pointer
my_class thingy;
set(thingy); // OK - sets thingy.m_srf
do_something(thingy); // OK - passes thingy.m_srf to the function
关于c++ - 指针/引用*&运算符重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18854484/