当一个对象的寿命应该更长时,即使它超出范围,也应该使用指针,对吧?
这里我只是创建了一个 Movie m;. 它将在堆栈上创建并在超出范围时自动删除。
//In some header file
typedef struct{
Qstring name;
int id;
//...
} Movie ;
QList<Movie> movieList; //It's the same as the standard list of c++.
//In a function somewhere else
void doSomething(/*...*/)
{
//Do something...
Movie m = { /* ... */ };
movieList.push_back( m );
}
列表将 T 类型的常量引用作为参数。所以是地址,对吧?但是当Movie m;
超出范围时,它将被删除。不知何故,列表中的项目仍然存在。
但是,我的问题是我应该使用指针并Movie m;
在堆上创建还是这样?什么是更好的风格?