当我取消引用一个指针并将其指定给它时,它会更改指针指向的内容,它不会调用operator=
指向的内容。我做了这个程序来证明这一点:如何使指针的引用保持对该对象的引用?
#include <iostream>
struct S
{
void operator =(int)
{ x = 5; }
operator int*()
{
return &x;
}
int x;
};
std::ostream& operator <<(std::ostream& out, S const& s)
{
return out << s.x;
}
int main()
{
S s;
int *x = s;
*x = 10;
std::cout << *x;
}
这将打印10.做*x = 10
不修改对象x
点。我怎样才能做到这一点? (欢迎使用C++ 11解决方案)
你的第一句话是不正确的。 –
你怎么可能知道赋值给'int'的赋值操作符何时被调用? – chris
即使把不确定的行为放在一边,你的结论是没有意义的。如果你说'* x = 10;'。然后打印'* x'并查看'10'。你如何得出结论,“x”指向的对象没有被修改,因为如果*被修改,结果正是你期望的结果? –