⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptr.h

📁 SP是一个基于GNU C++编译器
💻 H
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#ifndef Ptr_INCLUDED#define Ptr_INCLUDED 1#include "Boolean.h"// T must have Resource as a public base class// T may be an incomplete type#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endiftemplate<class T>class Ptr {public:  Ptr() : ptr_(0) { }  Ptr(T *ptr);  ~Ptr();  Ptr(const Ptr<T> &);  Ptr<T> &operator=(const Ptr<T> &);  Ptr<T> &operator=(T *);  T *pointer() const { return ptr_; }  T *operator->() const { return ptr_; }  T &operator*() const { return *ptr_; }  void swap(Ptr<T> &p) {    T *tem = p.ptr_;    p.ptr_ = ptr_;    ptr_ = tem;  }  Boolean isNull() const { return ptr_ == 0; }  // operator const void *() const { return ptr_; }  void clear();  Boolean operator==(const Ptr<T> &p) const {    return ptr_ == p.ptr_;  }  Boolean operator!=(const Ptr<T> &p) const {    return ptr_ != p.ptr_;  }  Boolean operator==(const T *p) const {    return ptr_ == p;  }  Boolean operator!=(const T *p) const {    return ptr_ != p;  }private:  T *ptr_;};template<class T>class ConstPtr : private Ptr<T> {public:  ConstPtr() { }  ConstPtr(T *ptr) : Ptr<T>(ptr) { }  ConstPtr(const Ptr<T> &p) : Ptr<T>(p) { }  ConstPtr(const ConstPtr<T> &p) : Ptr<T>(p) { }  ConstPtr<T> &operator=(const Ptr<T> &p) {    Ptr<T>::operator=(p); return *this;  }  ConstPtr<T> &operator=(const ConstPtr<T> &p) {    Ptr<T>::operator=(p); return *this;  }  ConstPtr<T> &operator=(T *p) {    Ptr<T>::operator=(p); return *this;  }  const T *pointer() const { return Ptr<T>::pointer(); }  const T *operator->() const { return Ptr<T>::pointer(); }  const T &operator*() const { return *Ptr<T>::pointer(); }  void swap(ConstPtr<T> &p) { Ptr<T>::swap(p); }  Ptr<T>::isNull;  Ptr<T>::clear;  Boolean operator==(const Ptr<T> &p) const { return Ptr<T>::operator==(p); }  Boolean operator!=(const Ptr<T> &p) const { return Ptr<T>::operator!=(p); }  Boolean operator==(const ConstPtr<T> &p) const {    return Ptr<T>::operator==(p);  }  Boolean operator!=(const ConstPtr<T> &p) const {    return Ptr<T>::operator!=(p);  }};#ifdef SP_NAMESPACE}#endif#endif /* not Ptr_INCLUDED */#ifdef SP_DEFINE_TEMPLATES#include "Ptr.cxx"#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -