我阅读了使用c ++ book编写的编程原理和实践中编写的代码.
struct Link {
string value;
Link* prev;
Link* succ;
Link(const string& v, Link* p = nullptr, Link* s = nullptr)
: value{v}, prev{p}, succ{s} { }
};
Run Code Online (Sandbox Code Playgroud)
我喜欢他的教学方法,从一个空壳开始,一路向上(他/他指的是本书的作者).因此,在他第一次尝试建立一个名单(挪威诸神)时,他这样做了:
Link* norse_gods = new Link{"Thor",nullptr,nullptr};
norse_gods = new Link{"Odin",nullptr,norse_gods};
norse_gods–>succ–>prev = norse_gods;
norse_gods = new Link{"Freia",nullptr,norse_gods};
norse_gods–>succ–>prev = norse_gods;
Run Code Online (Sandbox Code Playgroud)
我的困惑在于他必须明确说明这一点:
norse_gods–>succ–>prev = norse_gods;
Run Code Online (Sandbox Code Playgroud)
如第三和第五行所示.
我在想添加项目而没有明确说明每次添加之间的代码行也会起作用.即:
Link* norse_gods = new Link{"Thor",nullptr,nullptr};
norse_gods = new Link{"Odin",nullptr,norse_gods};
norse_gods = new Link{"Freia",nullptr,norse_gods};
Run Code Online (Sandbox Code Playgroud)
我的思维状态是错误的吗?为什么必须将该行(norse_gods–>succ–>prev = norse_gods;)明确添加到代码中