gpt4 book ai didi

c++ - 在初始化列表中使用复杂函数来初始化 const 成员是一个好的设计吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:18 24 4
gpt4 key购买 nike

最近我在看一个类(class)的旧烂摊子......长话短说,如果一个成员是常量,将有助于线程安全。
但问题是 member 是在 ctor 中初始化的,而且是非平凡的构造。所以我在考虑为那个成员创建一个特殊的初始化函数。这是一个好的决定吗? super 简单的小例子(真正的代码充满了条件 :) 和 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;
}
};

最佳答案

这实际上是针对此问题的一种普遍接受的解决方案。如果可能,请考虑将 init 函数设为静态,以便对正在构造的对象(例如虚拟调用的行为)进行操作的意外语义无法启动。

关于c++ - 在初始化列表中使用复杂函数来初始化 const 成员是一个好的设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com