我会尝试总结一下我需要的单词和代码片段。
我有一个类Foo
,其中包含Bar
类型的数据成员:
class Foo {
public:
Bar instance_of_Bar;
Foo (int some_data)
{
// I need to initialize instance_of_Bar using one of its
// constructors here, but I need to do some processing first
// This is highly discouraged (and I prefer not to use smart pointers here)
instance_of_bar = Bar(..);
// As an unrelated question: will instance_of_Bar be default-initialized
// inside the constructor before the above assignment?
}
}
显然,“正确”的方法是使用这样的初始化列表:
Foo (int some_data) : instance_of_Bar(some_data) {}
但这不是一个选项,因为我需要在some_data
上做一些工作,然后再将它传递给Bar
构造函数。
希望我清楚自己。以最小的开销和复制来做RAII的方式是什么(Bar
类很重要。)
非常感谢。
答案 0 :(得分:4)
"但这不是一个选项,因为我需要在some_data上做一些工作才能将它传递给Bar构造函数。"
如何为提供另一项功能"在some_data
" 上做一些工作:
Foo (int some_data) : instance_of_Bar(baz(some_data)) {}
int baz(int some_data) {
// do some work
return some_data;
}