c语言sqt用法,c – Qt:如何使用Qt的Smartpointers

我有“老式”C编程经验(即我关心指针和内存管理).我确实想利用现代概念.

由于我的应用程序大量使用Qt,我想使用Qt的智能指针.然而,我对一般的智能指针以及它们在Qt中的使用感到有些困惑.

1.)据我所知,如果我从QObject派生,我应该更好地坚持Qt的对象树和所有权模型,而忘记智能指针.正确?

2.)在C中,我可以使用std :: shared_ptr和std :: unique_ptr. Qt中的等效智能指针是什么?

假设我有以下代码:

QList * foobar(MyOtherObject *ptr) {

// do some stuff with MyOtherObject

QList ls = new QList();

for(int i=0;i<10;i++) {

MyObject* mi = new MyObject();

...

ls.insert(mi);

}

return ls;

}

int main() {

MyOtherObject* foo = new MyOtherObject();

QList *bar = foobar(foo);

// do stuff

// and don't care about cleaning up?!

}

3.)如何使用智能指针将上述代码段翻译成版本?

4.)特别是:我应该将功能签名更改为使用智能指针吗?它似乎创建了非常复杂的类型签名(返回类型和传递的参数).另外,如果某些“遗留”函数调用另一个函数 – 使用原始指针编写函数签名更好,并且仅使用智能指针“内部”函数吗?

5.)什么smartpointer应该替换功能foobar中的ls?应该用于mi的指针类型是什么,即存储在QList中的对象是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值