代码之家  ›  专栏  ›  技术社区  ›  J. Doe

在C++中括号内的下划线是什么?[重复]

  •  0
  • J. Doe  · 技术社区  · 5 年前

    我正在阅读以下C++17代码:

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <fstream>
    #include <tuple>
    using namespace std;
    
    enum class Relationship { parent, child, sibling };
    struct Person { string name; };
    struct Relationships
    {
        vector<tuple<Person, Relationship, Person>> relations;
        void add_parent_and_child(const Person& parent, const Person& child)
        {
            relations.push_back({parent, Relationship::parent, child});
            relations.push_back({child, Relationship::child, parent});
        }
    };
    
    struct Research
    {
        Research (Relationships& relationships)
        {
            auto& relations = relationships.relations;
            for(auto&& [first, rel, second] : relations)
            {
                if(first.name == "John" && rel == Relationship::parent)
                {
                    cout << "John has a child called "  << second.name << endl;
                }
            }
        }
    };
    
    int main()
    {
        Person parent {"John"};
        Person child1 {"Chris"}, child2 {"Matt"};
        Relationships relationships;
        relationships.add_parent_and_child(parent, child1);
        relationships.add_parent_and_child(parent, child2);
    
        Research _(relationships);
    
        return 0;
    }
    

    这段代码可以编译并运行良好。我不明白的是:

        Research _(relationships);
    

    为什么会有下划线?这是C++17的新特性吗?它叫什么?

    1 回复  |  直到 4 年前
        1
  •  0
  •   halfer Rahul Baradia    4 年前

    哇,原来是一个变量名,在C++17中有效。这是一种非常懒惰的命名方式。