у меня есть эти две функции и переменная в классе:C++ выполнения функций, которые возвращают строку
int _identation = 0;
std::string ident(){
_identation++;
return "";
}
std::string newLine(){
std::string text = "\n";
for(int i = 0; i < _identation; i++){
text+="\t";
}
return text;
}
идент() функция просто увеличивает значение переменной и возвращает зЬй :: строковых (просто чтобы я мог использовать его в строках со строками).
Функция newLine() создает новую строку с символом '\ n' и помещает _identation '\ t', чтобы увеличить следующую строку.
Я не сейчас, если это относится к вопросу, но я использую какой-то шаблон дизайна посетителей. Я пытался сделать это на мой код:
std::string content = "<page>"+ident()+newLine();
, но случается, что мой компилятор делает функцию запустить Newline() первый и только после того, как она вызывает функцию идент(). Так что, если я хочу, чтобы мой код IDENT до создания новой строки я должен использовать это выражение:
std::string content = "<page>"+newLine()+ident();
Почему C++ читать эту строку с правой стороны налево? Я также сделал эту точную программу в Java, а JVM выполняет это выражение слева направо.
Thanks :)
Порядок оценки функций в C++ не указан. Если функции, которые вы вызываете в неопределенно упорядоченном выражении, имеют требования к порядку, ваша программа, безусловно, будет ошибкой – WhiZTiM
@WhiZTiM благодарит за ваш ответ. Что бы вы порекомендовали в моей ситуации? Используйте скобки или разделите это выражение на несколько строк? –
Несколько операторов. Я не думаю, что скобки помогут. Если вам нужны вещи, которые нужно выполнить в указанном порядке, напишите несколько операторов, которые выполняются в указанном порядке. Это так просто. – ajb