📄 qguardedptr-h.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/include/qguardedptr.h:1 --><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="Translator" content="Cavendish"><meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt"><title>qguardedptr.h包含文件</title><style type="text/css"><!--h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }a:link { color: #004faf; text-decoration: none }a:visited { color: #672967; text-decoration: none }body { background: #ffffff; color: black; font-family: "Times New Roman" }--></style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr bgcolor="#E5E5E5"><td valign=center> <a href="index.html"><font color="#004faf">主页</font></a> | <a href="classes.html"><font color="#004faf">所有的类</font></a> | <a href="mainclasses.html"><font color="#004faf">主要的类</font></a> | <a href="annotated.html"><font color="#004faf">注释的类</font></a> | <a href="groups.html"><font color="#004faf">分组的类</font></a> | <a href="functions.html"><font color="#004faf">函数</font></a></td><td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>qguardedptr.h</h1><p>这里是qguardedptr.h包含文件的所有文本,一字不差。它仅仅用来说明,版权由Trolltech保留。<hr><pre>/****************************************************************************** $Id$**** Definition of QGuardedPtr class**** Created : 990929**** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.**** This file is part of the kernel module of the Qt GUI Toolkit.**** This file may be distributed under the terms of the Q Public License** as defined by Trolltech AS of Norway and appearing in the file** LICENSE.QPL included in the packaging of this file.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition** licenses may use this file in accordance with the Qt Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for** information about Qt Commercial License Agreements.** See http://www.trolltech.com/qpl/ for QPL licensing information.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef QGUARDEDPTR_H#define QGUARDEDPTR_H#ifndef QT_H#include "qobject.h"#endif // QT_Hclass Q_EXPORT QGuardedPtrPrivate : public QObject, public QShared{ Q_OBJECTpublic: QGuardedPtrPrivate( QObject* ); ~QGuardedPtrPrivate(); QObject* object() const; void reconnect( QObject* );private slots: void objectDestroyed();private: QObject* obj;};template <class T>class QGuardedPtr{public: QGuardedPtr() : priv( new QGuardedPtrPrivate( 0 ) ) {} QGuardedPtr( T* o) { priv = new QGuardedPtrPrivate( (QObject*)o ); } QGuardedPtr(const QGuardedPtr<T> &p) { priv = p.priv; ref(); } ~QGuardedPtr() { deref(); } QGuardedPtr<T> &operator=(const QGuardedPtr<T> &p) { if ( priv != p.priv ) { deref(); priv = p.priv; ref(); } return *this; } QGuardedPtr<T> &operator=(T* o) { if ( priv->count == 1 ) { priv->reconnect( (QObject*)o ); } else { deref(); priv = new QGuardedPtrPrivate( (QObject*)o ); } return *this; } bool operator==( const QGuardedPtr<T> &p ) const { return priv->object() == p.priv->object(); } bool operator!= ( const QGuardedPtr<T>& p ) const { return !( *this == p ); } bool isNull() const { return !priv->object(); } T* operator->() const { return (T*) priv->object(); } T& operator*() const { return *( (T*)priv->object() ); } operator T*() const { return (T*) priv->object(); }private: void ref() { priv->ref(); } void deref() { if ( priv->deref() ) delete priv; } QGuardedPtrPrivate* priv;};inline QObject* QGuardedPtrPrivate::object() const{ return obj;}#endif</pre><!-- eof --><p><address><hr><div align=center><table width=100% cellspacing=0 border=0><tr><td>Copyright © 2002 <a href="http://www.trolltech.com">Trolltech</a><td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a><td><a href="zh_CN.html">译者:Cavendish</a><td align=right><div align=right>Qt 3.0.5版</div></table></div></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -