|
以下是QT里的源码:
1、添加时创建的局部对象
QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName)
{
QSqlDatabase db(type);
QSqlDatabasePrivate::addDatabase(db, connectionName);
return db;
}
2、这里是QT里边自己维护的一个map集合,把这个局部的对象和连接名添加进map集合了
void QSqlDatabasePrivate::addDatabase(const QSqlDatabase &db, const QString &name)
{
QConnectionDict *dict = dbDict();
Q_ASSERT(dict);
QWriteLocker locker(&dict->lock);
if (dict->contains(name)) {
invalidateDb(dict->take(name), name);
qWarning("QSqlDatabasePrivate::addDatabase: duplicate connection name '%s', old "
"connection removed.", name.toLocal8Bit().data());
}
dict->insert(name, db);
db.d->connName = name;
}
执行完addDatabase函数后 QSqlDatabase db(type)这个对象不就析构了啊?? |
|