序号"/>
为类的每一个对象生成一个唯一的序号
想要为类的每一个对象生成一个唯一的序号,且这序号为类的数据成员。
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;//只能默认初始化,不能拷贝初始化,像b=a.c=b;这种结果都为10f(a);f(b);f(c);
}
// output
// 10
// 11
// 12
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);//接着a的序号f(c);//接着b的序号f(d);//接着a的序号
}// output
// 10
// 11
// 12
// 11
综上所述,暂时先使用同一种初始化方式。
更多推荐
为类的每一个对象生成一个唯一的序号
发布评论