例子:
#include <iostream>
#include <vector>
using namespace std;
class A
{
public:
A(const char* s = "1234") {
cout << "ASDF" << endl;
}
};
int main()
{
vector<A> av(5);
cout << av.size() << endl;
return 0;
}
输出:
可见C++11输出了五次ASDF,而C++11之前仅输出一次ASDF。why?
因为C++11之前调用的是:
explicit vector( size_type count, const T& value = T(), const Allocator& alloc = Allocator());
先构造一个默认值T(),这里即A(),调用一次默认构造函数(注:形参都有默认值的构造函数也是默认构造函数),然后复制5个(调用的是复制(拷贝)构造函数ÿ