Den*_*nis 5 c++ smart-pointers operator-overloading c++14
我一直在尝试在一个包含在智能指针中的类上进行一些运算符重载(*和+).
auto p = std::make_unique<Polynomial<T>>();
Run Code Online (Sandbox Code Playgroud)
当我尝试使用正常重载来重载它时,它显然要求智能指针类型.
编辑,所以:
std::unique_ptr<Polynomial<T>> operator+(const std::unique_ptr<Polynomial<T>>& right);
template<class T>std::unique_ptr<Polynomial<T>> Polynomial<T>::operator+(const std::unique_ptr<Polynomial<T>>& right) {
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
而错误:
那么当类封装在smartpointer中时,如何重载正常运算符呢?
Lig*_*ica 11
别.
在指针上运行这些操作,而不是在指针上:
*p = *p + *p
Run Code Online (Sandbox Code Playgroud)
如果突然指针具有完全不同且意外的语义,那么对于代码的用户来说会非常混乱.
这对你来说也很困惑.