最近我在看一个班级的旧的可怕混乱......长话短说,如果一个成员是 const,它将有助于线程安全。
但问题是成员是在 ctor 中初始化的,而且它是非平凡的构造。所以我正在考虑为该成员创建一个特殊的 init 函数。这是一个好的决定吗。超级简单的小例子(真正的代码充满了条件:)和try-s):
class ComplexInitList
{
std::pair<double,double> init_pair(const int first, const int second)
{
if ((first == 0) || (second == 0))
throw std::invalid_argument("div by 0");
return std::make_pair(1.0/first, 1.0/second);
}
const std::pair<double,double> p;
public:
ComplexInitList(int a, int b):p(init_pair(a,b))
{
std::cout << p.first << ", " << p.second << std::endl;
}
};