如何使用此独特的操作员重载功能
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
}
我知道如何使用它的唯一方法是因为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
具有通常的含义,就像普通成员函数一样。
相关文章:
- 继承函数的重载解析
- 友谊和操作员+=重载
- C++重载>>和<<操作员
- 运算符重载中没有操作员'=='匹配项
- 更改重载操作员的签名
- C []索引操作员重载作为登录器和突变器
- 使用多个操作员与操作员重载会产生奇怪的错误
- 操作员重载=修改原始对象
- 为什么最后一个SR5对象不用重载的新操作员占据内存
- 如何使用此独特的操作员重载功能
- 操作员重载内部调用转换
- 重载<<操作员打印矢量内容
- 在C++重载cout ostream操作员
- 为什么以及如何重载操作员<<进行打印
- 插入运算符重载有什么问题?(<<操作员)
- 操作员在不同命名空间中的不明确重载
- c++重载的操作员工作
- "&"在操作员重载中意味着什么
- 对具有重载操作员>的类型进行就地销毁
- C++操作员重载两次