-1

根据我的说法,如果使用了 1 复制赋值运算符,那么输出应该是0 68,但0 87在情况 2 中它是87 87可以的。

#include <iostream>
using namespace std;
class numbered
{
  static int un;
public:
  int a;
  numbered (): a(un) {un++;}
  numbered(const numbered & n) : a(87){}
  numbered & operator=(const numbered) { a=68; return *this; }
};

int numbered::un=0;

void f(numbered  s){ cout<<s.a;}

int main()
{
  numbered a, b=a;
  cout << a.a << b.a;   //case 1
  f(a);f(b);        //case 2
  return 0;
}
4

2 回答 2

5

这个

numbered a, b=a;

也可以这样写:

numbered a, b(a);

这是一行中几个对象的定义。b是在这里构造的,所以调用的是copy c'tor。

于 2013-12-31T10:22:33.970 回答
5

它工作正常。

要获得您的预期结果:

numbered a, b;
b = a;
于 2013-12-31T10:23:48.273 回答