我在一个类中有这两个函数和一个变量:

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;
}


ident()函数只是增加一个变量并返回std :: string(仅是为了允许我与字符串内联使用)。

函数newLine()使用char'\ n'创建新行,并放置_identation'\ t'使下一行递增。

我现在是否与问题相关,但是我正在使用某种访客设计模式。我尝试在我的代码上执行此操作:

std::string content = "<page>"+ident()+newLine();


但是碰巧我的编译器使newLine()函数首先运行并且仅在调用ident()函数之后运行。因此,如果要在创建新行之前标识代码,则必须使用以下表达式:

std::string content = "<page>"+newLine()+ident();


为什么C ++从右侧到左侧读取此行?我还用Java编写了这个精确的程序,并且JVM从左到右执行了该表达式。

谢谢 :)

最佳答案

尝试以不同的方式执行它们。

std::string content = "<page>";
content+ident();
content+newLine();

10-08 08:53