yak*_*kov 3 c++ operator-overloading static-cast operator-keyword
运营商在这里超载了什么?
operator T * ()
我知道operator方法具有以下结构:
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: ???
};
Run Code Online (Sandbox Code Playgroud)
如果您在ideone上尝试它,则没有编译错误.那么这里发生了什么?
这是一个转换运算符,允许将类转换为T*.用法:
T * p = TObj;
Run Code Online (Sandbox Code Playgroud)
智能指针提供这个可能是一个坏主意,因为它很容易意外地获得非智能指针.标准智能指针通过get()函数提供显式转换,以防止意外转换.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |