在C ++中对默认构造函数的意外调用

时间:2018-04-30 13:03:12

标签: c++ constructor copy-constructor

我不明白为什么在执行以下程序时会调用默认构造函数。

我创建了一个类set groups [dict map {key value} $groups {lmap pair $value {lindex [split $pair :] 0}}] # {sunil {CSCvi6 CSCvi7 CSCvi87 CSCvi878 CSCvi95 CSCvj3} parames CSCvi8 arun {CSCvi89 CSCvj1}} ,它有一个默认构造函数,一个非默认构造函数和一个复制构造函数。它们有效,但是当我尝试将对象Location传递给另一个对象Location的构造函数时,它会自动被称为默认构造函数。为什么呢?

这是我为测试该程序而写的主要内容:

Salesman

我得到的输出是:

  

myconstrct默认副本

     

问题:复制副本复制副本副本

     

销售员的问题:复制默认

     

威利内部(直到**):复制   *复制   *复制副本   *复制副本   **

这里有课程:

int main() {
    Location a(1,1);
    Location b;
    Location c(a);

    std::vector<Location> vett;
    std::cout << "\nPROBLEMS: " << std::endl;

    vett.push_back(a);
    vett.push_back(b);
    vett.push_back(c);
    std::cout << "\nPROBLEMS OF A SALESMAN: " << std::endl;

    // here it is called the default constructor! Why?

    Salesman Willy(a, vett.begin(), vett.end());
}

0 个答案:

没有答案