jmo*_*rty -2 c++ qt pointers object qlist
我是Qt的新手,我遇到过这一行:
QList<Class*>* _lstChildren = new QList<Class*>();
Run Code Online (Sandbox Code Playgroud)
其中类派生自另一个类,并且其中包含各种构造函数.
我很好奇:为什么额外*使用的,什么是()在最后的手段?
与Qt无关,它是纯粹的C++语法
QList<Class*> - 类型QList<Class*>* _lstChildren - 变量,指向上述类型的指针= new QList<Class*>() - 通过new-expression初始化指针变量QList是Qt的模拟std::deque,std::list(不是直接等价于),Class*是作为模板参数传递的类型.
()这是新表达式的一部分,用于初始化带有指向创建的对象QList<Class*>类型的值的指针.
在这种情况下,它调用默认构造函数 - 括号内没有提供参数.如果QList根本没有构造函数,则意味着创建对象的值初始化(通过零).
您的列表包含原始指针,因此您必须指定它Class*,例如在动态内存中创建对象.
QList<Class*>* lstChildren = new QList<Class*>();
Class* child1= new Class();
lstChildren->append(child1);
Run Code Online (Sandbox Code Playgroud)
它发生所以QList不应该删除那些指针指向的对象,它只会破坏指针本身.要清理,你必须使用
qDeleteAll(*lstChildren);
lstChildren->clear();
Run Code Online (Sandbox Code Playgroud)
或单独删除它们(并从列表中删除).