我有以下代码:-
#include <iostream>
using namespace std;
class A {
int *val;
public:
A() { val = new int; *val = 0; }
int get() { return ++(*val); }
};
int main() {
A a,b = a;
A c,d = c;
cout << a.get() << b.get() ;
cout << endl ;
cout << c.get() << endl ;//
cout << d.get() << endl;
return 0;
}
它产生的输出为: -
21
1
2
c.get 和 d.get 的行为很容易理解。c 和 d 共享同一个指针 val,a 和 b 共享同一个指针 val。
所以 c.get() 应该返回 1 并且 d.get() 应该返回 2。但我期待 a.get() 和 b.get() 中的类似行为。(也许我没有正确理解 cout)
我无法理解 a.get() 是如何产生 2 的。
你能解释一下为什么我会得到这样的输出吗?据我说,输出应该是: -
12
1
2