在C++中使操作员>过载
Overloading operator-> in C++
我有一个智能指针类,我想重载operator->
;提供它是为了方便,这样我就可以直接访问智能指针中包含的类的成员。
我正在研究Boost在其shared_ptr
模板中实现此运算符的方式。我注意到他们添加了一个断言,在返回指针之前检查指针是否确实为非null。目前,我的运算符返回指针时没有检查指针是否为null(本质上,null指针在我当前的实现中是未定义的行为)。我也应该添加这个断言吗?
(还有,这个运算符是如何调用的?我在网上找不到。)
这取决于您。您可以简单地记录将其与null指针一起使用是未定义的,并且什么也不做,您可以断言,您可以抛出异常。没有一个正确的答案。就我个人而言,我可能会抛出一个例外。
我也应该添加这个断言吗?
如果没有它你很开心,那也没关系只要确保它被记录在案:这才是最重要的。
(还有,这个操作员是怎么叫的?我在网上找不到这个。)
它并没有真正的名字。该标准只是将其称为"->
运算符",也称为"类成员访问运算符之一"([expr.const]
)。
维基百科将其列为"a指向的对象的成员b"(是的,其他操作符都有简洁的标识符)。
相关文章:
- ostream过载时的缓冲区冲洗
- gcc和c++17的过载解析失败
- C++Cast运算符过载
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- EASTL矢量<向量<int>>连续的
- 过载'operator new'如何导致无限循环?
- "Inverse SFINAE"避免模棱两可的过载
- 操作员C++的模棱两可的过载
- C++中>>操作员过载时出现问题?
- 基于返回类型的转换和过载扣除
- 没有可行的过载'='错误,可能导致这种情况的原因是什么?
- 是否存在包含负号的isdigit函数(过载)
- C++许多 SFINAE 风格的过载
- C++函数过载会导致 SEG 故障
- SFINAE不能防止模棱两可的操作员过载吗?
- 如何解决不明确的运算符过载问题?
- 屏幕插入运算符<<的运算符过载问题
- ostream 运算符<< 为获取 STL 容器而过载,传递 std::string 会破坏它?
- 在这种情况下是私有的吗?试图使操作员<<过载
- C 操作员&gt;&gt;与突变器过载