首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在指针上重载operator++

在指针上重载operator++
EN

Stack Overflow用户
提问于 2014-05-06 00:22:45
回答 3查看 627关注 0票数 1

我有一门课:

代码语言:javascript
运行
复制
class Name {
public:
    int key;
    Name* next;
}

我如何编写operator++,以便当p"Node* p"时,如果我编写"p++",它将执行"p = p->next"

期待你的谢意,马龙。

EN

回答 3

Stack Overflow用户

发布于 2014-05-06 00:26:49

你不能,也不应该,因为这是违反直觉的。

关于拥有这样的对象的数组的事情:

代码语言:javascript
运行
复制
Name names[42];
Name* p = names;
p++;

p现在应该指向数组中的第二个元素(即names[1]),而不是指向names[0]持有的任何内容。

如果一个对象持有指向下一个对象的指针,那么将++应用于该对象本身(而不是指针),最多只能得到下一个对象。

票数 6
EN

Stack Overflow用户

发布于 2014-05-06 00:29:04

答案很简单:你不能!重载始终至少涉及一个用户定义类型。指针始终被视为内置类型,即使它们指向用户定义的类型。您将需要创建一个合适的类来创建迭代器。

票数 3
EN

Stack Overflow用户

发布于 2014-05-06 00:35:43

除了Luchian Grigore所说的之外,标准库中的迭代器就是您想要实现的目标。如果您想为您的类提供迭代器,那么将operator++添加到迭代器将是有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23477199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档