我是新手使用c ++并浏览一些源代码我在类中找到了代码。
SDL_Surface *m_srf;
//...
operator SDL_Surface*&()
{
return m_srf;
}
它会重载指针(*)和引用或mem地址(&)运算符吗?
答案 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