C ++设置指向另一个指针的指针

时间:2013-11-15 18:25:28

标签: c++

Object* a = new Object();

Object* b = a;

Object类中有没有办法知道'b = a'发生了?我试过重载operator =但它似乎没有开火。

3 个答案:

答案 0 :(得分:5)

您为Object而不是Object *重载了运算符。您不能为基本指针重载运算符。

您需要编写一个模拟指针但跟踪操作的包装器。也许你正在寻找像shared_ptr这样的智能指针?它实现了引用计数,就像你想要做的那样。

答案 1 :(得分:0)

这真的是你想要做的吗?

我觉得你想把a的值复制到b?

即:

Object* b = *a;

否则你只是设置b指向a。你必须重载operator = for Object *而不是operator =作为const Object&的Object的一部分。除非你确实想要复制指针,否则你所拥有的就好了。

请注意,重载operator = for Object *是不可能的!我怀疑这实际上是你真正试图做的事情。

答案 2 :(得分:0)

我认为这不会调用Object类的复制构造函数或使用Object类的'='运算符。它只是两个Object指针之间的赋值。因此,即使你对Object的'='运算符进行了重载,在这种情况下也不会调用它,你什么都没有被触发。