Как говорится в других ответах, C ++ не имеет этой концепции. Вы можете легко обойти это, хотя.
Либо у вас может быть неопределенное значение, которому вы инициализируете bar в конструкторе, обычно -1.0 или что-то подобное.
Если вы знаете, что Calculate_bar никогда не возвращает отрицательные значения, вы можете реализовать неопределенную функцию в качестве проверки для <0.0. </p>
Более общим решением является использование bool, говорящего о том, определен ли бар, но что вы инициализировали значение false в конструкторе, и когда вы впервые устанавливаете его, вы меняете его на true. boost :: необязательный делает это элегантным шаблонным способом.
Вот как будет выглядеть пример кода.
class Foo {
public:
double get_bar();
Foo() : barDefined(false) {}
private:
double bar;
bool barDefined;
void calculate_bar() {
bar = something();
}
};
double Foo::get_bar() {
if ( barDefined == false ) {
calculate_bar();
barDefined = true;
}
return bar;
}