C++:使用 std::unique_ptr 访问重载运算符++的最佳方式?
C++: Best way to access overloaded operator++ with std::unique_ptr?
如果我有一个带有重载运算符++的类,例如:
在标题中:
SomeClass& operator++(int);
实现:
SomeClass& SomeClass::operator++(int) { someLocalVar++; return this; }
如果我随后在std::unique_ptr
中实例化SomeClass
:
std::unique_ptr<SomeClass> someClass(new SomeClass());
然后我想打电话给operator++
一些someClass
,我使用:
someClass.get()->operator++(0);
我知道我可以做这样的事情:
SomeClass *ptrSomeClass = someClass.release();
ptrSomeClass++;
但这也相当冗长,并且首先违背了使用std::unique_ptr
的目的。
如果有更好的方法用std::unique_ptr
调用重载operator++
?
与使用指向对象类型的任何其他指针完全相同的方式 - 首先取消引用指针,然后将所需的操作应用于所指向的基础对象。std::unique_ptr
重载了->
,并*
取消引用运算符,以提供与原始指针类似的语义,例如:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
someClass->operator++(0);
或:
std::unique_ptr<SomeClass> someClass(new SomeClass);
...
(*someClass)++;
相关文章:
- C++ ->运算符 [] 的快捷方式
- C++:使用 std::unique_ptr 访问重载运算符++的最佳方式?
- 逗号运算符在对齐方式中
- 是否有快捷方式重叠运算符?
- 重载运算符是具有较小默认对齐方式的新增运算符
- 为什么三元运算符在编译时的工作方式与运行时不同?
- 对运算符删除覆盖的工作方式感到困惑
- 重载小于 (<) 运算符,用于以多种方式对对象进行排序
- 重载输入/输出运算符,为什么它以这种方式工作而不是以另一种方式工作
- Clang和g++处理运算符过载的方式不同
- 从BoostCon谈话中重载取消引用运算符的奇怪方式
- C++ 自定义运算符(+=) 的行为方式不可预测
- 运算符>>(,) 重载以令人惊讶的方式运行
- 比率类中的运算符/=以错误的方式工作
- 运算符 [] 和 insert() 函数在 C++ 映射中的行为方式不应该相同吗?
- 提供相同的ostream和wostream流运算符的任何快捷方式
- 复制构造函数未被调用,无法理解赋值运算符的工作方式
- C++ 字符串比较运算符>根据两个字符串的比较方式生成不同的输出
- 三元运算符是否以定义的方式短路
- 在派生类和切片中使用运算符=的正确方式