#include #include #include #include #include #include QString returnString(QString string) { QString returnString = string; returnString.append("bar"); return returnString; } void testQPointer() { // QObject* QPointer object; qDebug() << "testQPointer created the QPointer - QPointer is null: " << object.isNull() << object; object = new QObject; qDebug() << "testQPointer initialized the QObject - QPointer is null: " << object.isNull() << object; delete object; qDebug() << "testQPointer deleted QObject - QPointer is null: " << object.isNull() << object; } void testQSharedPointer(QObject& object) { QSharedPointer object2(&object); } void testImplicitSharing() { QString foo = "foo"; QString bar = foo; bar.append("bar"); } void testSignalsAndSlots() { QPointer sender = new QObject; QPointer receiver = new QObject; QObject::connect(sender, SIGNAL(destroyed()), receiver, SLOT(deleteLater())); qDebug() << "Deleting sender" << sender; sender->deleteLater(); qDebug() << "sender" << sender; qDebug() << "receiver" << receiver; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString p = "foo"; qDebug() << "returnString" << p << returnString(p); testQPointer(); QPointer sp = new QObject; qDebug() << "testQSharedPointer" << sp; testQSharedPointer(*sp.data()); qDebug() << "testQSharedPointer" << sp; qDebug() << "testImplicitSharing"; testImplicitSharing(); qDebug() << "testSignalsAndSlots"; testSignalsAndSlots(); return 0; }