想要为类的每一个对象生成一个唯一的序号,且这序号为类的数据成员。
1.使用默认的构造函数,不能使用拷贝初始化,否则序号(mysn会被拷贝)会相同
#include <iostream>
class numbered {
public:
numbered()
{
static int unique = 10;
mysn = unique++;
}
int mysn;
};
void f(numbered s)
{
std::cout << s.mysn << std::endl;
}
int main()
{
numbered a, b , c;
f(a);
f(b);
f(c);
}
2.使用拷贝构造函数
#include <iostream>
class numbered {
public:
numbered()
{
static int unique = 10;
mysn = unique++;
}
numbered(const numbered& n) { mysn = n.mysn + 1; }
int mysn;
};
void f(const numbered& s)
{
std::cout << s.mysn << std::endl;
}
int main()
{
numbered a, b = a, c = b,d;
f(a);
f(b);
f(c);
f(d);
}
综上所述,暂时先使用同一种初始化方式。