汗颜呐,
我一直以为用new关键词构造的类和直接用类型构造出的类是一样的,今天才发现不一样。
前者如:User* user1=new User(string name);
后者如:user1 User(string name);
前者是一个指针,后者是一个对象,
前者需要手动delete,后者自动回收,
最重要一点,我就是在这吃的亏,在同一个函数内使用无所谓,但如果出了该函数,new出的对象内存不会回收,但用类型构造出的就会回收,即使有指向该指针的引用。我在一个map静态变量中中保存了用类型名构造出的对象的指针,我以为由于指针未释放,该对象也不应该释放,没想到跟踪发现释放了,后来改为new就没事了!