【发布时间】:2012-06-24 00:40:30
【问题描述】:
好的,成员变量can be used 用于初始化初始化列表中的其他成员变量(注意初始化顺序等)。成员函数呢?具体来说,根据 C++ 标准,这个 sn-p 合法吗?
struct foo{
foo(const size_t N) : N_(N), arr_(fill_arr(N)) {
//arr_ = fill_arr(N); // or should I fall back to this one?
}
std::vector<double> fill_arr(const size_t N){
std::vector<double> arr(N);
// fill in the vector somehow
return arr;
}
size_t N_;
std::vector<double> arr_;
// other stuff
};
【问题讨论】:
-
问题很好,但是代码示例有些人为。是什么阻止您将
fill_arr声明为static并且毫无疑问它是合法的? -
那是线程安全的吗?我的意思是,
fill_arr有一个本地向量,如果那是static,我是不是用某种互斥锁来保护它? -
std::vector<double> arr具有自动存储,因此每次调用函数fill_arr都会有一个实例。这是基本的C++... -
本例中最好将fill_arr标记为const。为了可读性。