求解释代码的意思
- C/C++ code
template<typename Y> Handle& operator=(const Handle<Y>& r) { if(this->_ptr != r._ptr) { if(r._ptr) { r._ptr->__incRef(); } T* ptr = this->_ptr; this->_ptr = r._ptr; if(ptr) { ptr->__decRef(); } } return *this; }
[解决办法]
应该是 Handle类模板针对其他类型的=赋值操作符重载。
主要用于带有类型转换的赋值。
[解决办法]
- C/C++ code
template<typename Y>Handle& operator=(const Handle<Y>& r) // 重载拷贝赋值操作符{ if(this->_ptr != r._ptr) // 如果当前对象(即=号左边的对象)中的_ptr和传入参数r的_ptr不相等(隐含意义:如果相等则 { // 直接跳到return *this; 即返回当前对象) if(r._ptr) // 如果r._ptr是一个正常的指针 { r._ptr->__incRef(); // 增加r._ptr被引用的次数 } T* ptr = this->_ptr; // 将当前对象的_ptr赋给ptr this->_ptr = r._ptr; // 将传入参数r的_ptr赋给当前对象的_ptr if(ptr) // 如果ptr是一个有效指针 { ptr->__decRef(); // 减少ptr被引用的次数 } } return *this; // 返回当前对象}