當我取消引用一個指針並將其指定給它時,它會更改指針指向的內容,它不會調用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」指向的對象沒有被修改,因爲如果*被修改,結果正是你期望的結果? –