c++复制构造函数的调用有关问题
c++复制构造函数的调用问题在C++ primer(第四版)书中的第408页,看到复制构造函数何时调用的情况,其中书中
c++复制构造函数的调用问题
在C++ primer(第四版)书中的第408页,看到复制构造函数何时调用的情况,其中书中说到初始化容器元素
vector<string> svec(5);
编译器首先使用string默认构造函数创建一个临时值来初始化svec,然后使用复制构造函数将临时值复制到svec的每个元素。
我想验证一下,是不是如书中所说的调用了复制构造函数,但不知道怎么在string的复制构造函数中下断点,于是写了下面的验证程序:
1 class Test
{
public:
Test()
{
cout << "Test()" << endl;
}
Test(const Test& rhl)
{
cout << "Test(const Test&)" << endl;
}
};
int main()
{
vector<Test> testVector(5);
return 0;
}
但是运行结果,发现只是调用了5次默认构造函数,不知道问题出在哪,还请各位帮忙看看。
C++
[解决办法]你的编译环境是什么? 有些编译器可能会做优化.
调用一次默认构造函数和 5 次拷贝构造函数的说法是没什么错的.
[解决办法]我在linux上试了一下结果是对的。你得到的结果应该是跟编译器有关。