Object* a = new Object();
Object* b = a;
Object类中有没有办法知道'b = a'发生了?我试过重载operator =但它似乎没有开火。
答案 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的'='运算符进行了重载,在这种情况下也不会调用它,你什么都没有被触发。