【发布时间】:2014-02-21 07:27:03
【问题描述】:
这里重载了什么运算符?
operator T * ()
我知道操作符方法的结构如下:
type operator operator-symbol ( parameter-list )
假设我们有以下代码
template<typename T> class SmartPtr
{
public:
SmartPtr(T* data): member(data) {}
T* member;
T& operator * () { return *member; } //usage: *TObj
T*& operator () () { return member; } //usage: TObj()
operator T * () { return member; } //usage: ???
};
如果您在ideone 上尝试,则不会出现编译错误。那么这里发生了什么?
添加:static_cast<T*>(TObj) 拨打operator T * 对吗?我试过了here。
【问题讨论】:
-
这是一个转换运算符。
标签: c++ operator-overloading operator-keyword static-cast