我如何使用这个独特的运算符重载函数

How do i use this unique operator overloaded function

我在使用 sqlapi 时遇到了这个运算符重载,它完全满足我的需要,但我不确定它是如何工作的。

sqlapi.h

class SQLAPI_API SAString
{
public:
//stuff

//! Return pointer to const string
operator const SAChar *() const;

//stuff
}

我知道如何使用它的唯一方法是因为看起来不太漂亮的智能感知:

char* chPointer = SAStringObj.operator const SAChar*();

问题:

是否有更好看的方法来调用这个重载运算符?

有人可以剖析这个函数头告诉我们关于函数的什么吗?

"*operator const SAChar () const;"

这是一个隐式转换运算符,用于将 SAString 转换为 const SAChar *。每当您在预期 const SAChar * 的上下文中使用 SAString 时,都会隐式调用它(除非它会产生歧义)。

void foo(const SAChar *);

SAString myString("bar");

foo(myString);
const SAChar *myCharPtr = myString;

您可以使用 static_cast 在其他上下文中强制执行它:

static_cast<const SAChar *>(myString)

您可以使用 boost::implicit_castsafer:

boost::implicit_cast<const SAChar *>(myString)

在 C++11 中,你可以有一个 explicit cast operator,它只在 explicit cast contexts 中有效:

explicit operator const SAChar *() const;

最后的const和普通成员函数一样,具有通常的含义。