我在使用sqlapi期间遇到了该操作员的过载,这完全可以完成我的需求,但我不确定它是如何工作的。
sqlapi.h
class SQLAPI_API SAString
{
public:
//stuff
//! Return pointer to const string
operator const SAChar *() const;
//stuff
}
我知道如何使用它的唯一方法是因为Intellisense看起来不漂亮:
char* chPointer = SAStringObj.operator const SAChar*();
问题:
是否有更好的方式来称呼此超载运算符?
有人可以剖析此功能标题告诉我们有关该功能的信息吗?
"*操作员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_cast
:
boost::implicit_cast<const SAChar *>(myString)
在C 11中,您可以具有 explicit cast Operator,它仅在显式铸造上下文中有效:
explicit operator const SAChar *() const;
最后的 const
具有通常的含义,就像普通成员函数一样。