指针/参考*&操作员超载

时间:2013-09-17 15:57:44

标签: c++ pointers reference overloading operator-keyword

我是新手使用c ++并浏览一些源代码我在类中找到了代码。

SDL_Surface *m_srf;
//...
operator SDL_Surface*&()
{
    return m_srf;
}

它会重载指针(*)和引用或mem地址(&)运算符吗?

3 个答案:

答案 0 :(得分:3)

这是转换运营商。它执行转换为类型SDL_Surface*&,id est,指向SDL_Surface指针的引用类型。

答案 1 :(得分:1)

这是一个将对象转换为对SDL_Surface指针的引用的转换。

答案 2 :(得分:1)

这是转换运算符:名为Class::operator Type()的成员运算符可用于将类型为Class的对象转换为Type类型的对象。< / p>

在这种情况下,它会转换为对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