我有 C++ 代码,可以归结为以下内容:
class Foo{
bool bar;
bool baz;
Foo(const void*);
};
Foo::Foo(const void* ptr){
const struct my_struct* s = complex_method(ptr);
bar = calculate_bar(s);
baz = calculate_baz(s);
}
从语义上讲,bar 和 baz 成员变量应该是 const,因为它们在初始化后不应该改变。但是,似乎为了使它们如此,我需要在初始化列表中初始化它们而不是分配它们。说清楚,我明白为什么我需要这样做。问题是,如果不做以下不受欢迎的事情之一,我似乎找不到任何方法将代码转换为初始化列表:
- 调用
complex_method
两次(对性能不利) - 添加指向 Foo 类的指针(会使类大小不必要地变大)
有什么方法可以使变量 const 同时避免这些不良情况?