Van*_*gan 1 c++ operator-overloading unique-ptr
如果我有一个带有重载 operator++ 的类,例如:
在标题中:
SomeClass& operator++(int);
Run Code Online (Sandbox Code Playgroud)
执行:
SomeClass& SomeClass::operator++(int) { someLocalVar++; return this; }
Run Code Online (Sandbox Code Playgroud)
如果我然后SomeClass在一个实例化std::unique_ptr:
std::unique_ptr<SomeClass> someClass(new SomeClass());
Run Code Online (Sandbox Code Playgroud)
然后我想打电话给operator++some someClass,我使用:
someClass.get()->operator++(0);
Run Code Online (Sandbox Code Playgroud)
我知道我可以做这样的事情:
SomeClass *ptrSomeClass = someClass.release();
ptrSomeClass++;
Run Code Online (Sandbox Code Playgroud)
但这也很冗长,并且首先违背了使用的目的std::unique_ptr。
如果调用一个重载的更好的方法operator++有std::unique_ptr?
与处理指向对象类型的任何其他指针完全相同的方式 - 首先取消对指针的引用,然后将所需的操作应用于所指向的底层对象。 std::unique_ptr已重载->和*取消引用运算符以提供与原始指针类似的语义,例如:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
someClass->operator++(0);
Run Code Online (Sandbox Code Playgroud)
或者:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
(*someClass)++;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |