値渡し・参照渡し

struct Node{
    string name = "default name";
    Node(){}
    vector<Node> children;
};

int main() {

    auto node0 = Node();
    auto node1 = Node();

    node0.children.push_back(node1);
    node1.name = "new name";

    cout << node0.children[0].name << endl;
}
default name
  • 値渡し(コピー)が行われているので名前の変更が反映されない