class CT
{
public:
CT()
{
std::cout << "CT()" << std::endl;
}
~CT()
{
std::cout << "~CT()" << std::endl;
}
CT(const CT &t)
{
std::cout << "CT(CT &t)" << std::endl;
}
};
void main()
{
std::vector<CT> vec;
CT t;
vec.push_back(t);
{
public:
CT()
{
std::cout << "CT()" << std::endl;
}
~CT()
{
std::cout << "~CT()" << std::endl;
}
CT(const CT &t)
{
std::cout << "CT(CT &t)" << std::endl;
}
};
void main()
{
std::vector<CT> vec;
CT t;
vec.push_back(t);
}
两次CT(CT &t):
第一次:将t push_back后赋给内部一个局部临时变量tmp
第二次:内部新建一个对象CT *pt = new CT(tmp)