根据我的情况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;
}
答案 0 :(得分:5)
此
numbered a, b=a;
也可以这样写:
numbered a, b(a);
这是一行中几个对象的定义。 b
是在这里构建的,所以它就是被称为拷贝c'tor。
答案 1 :(得分:5)
它工作正常。
获得预期结果:
numbered a, b;
b = a;