我不明白为什么在执行以下程序时会调用默认构造函数。
我创建了一个类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());
}