具有以下源文件:
Obj.h
class Obj
{
public:
Obj();
Obj(const Obj &other);
~Obj();
};
Obj.cpp
#include <iostream>
#include "Obj.h"
using namespace std;
Obj::Obj(){ cout << "create "; }
Obj::Obj(const Obj &other){ cout << "copy "; }
Obj::~Obj(){ cout << "delete "; }
main.cpp
#include <vector>
#include "Obj.h"
using namespace std;
vector<Obj> objects;
int main(int argc, char** argv)
{
for (int i = 0; i < 4; i++)
objects.push_back(*(new Obj));
//system("pause");
}
程序输出: 创建副本创建副本复制删除创建副本复制复制删除删除创建复制复制复制复制删除删除删除
为什么不能只是“创建,创建,创建,创建”?
我没有解决该问题的想法,而且我刚刚开始学习指针和c ++本身并没有帮助。任何帮助表示赞赏!
我将Visual Studio 2017与默认的任何编译器一起使用。