我是使用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/

10-11 23:19