Console Library 4.7.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console::cursor_ptr< T > Class Template Reference

双指针游标智能指针(非数组版本)。 More...

#include <cursor_ptr.h>

Public Member Functions

 cursor_ptr ()
 默认构造,两个指针均为 nullptr。
 cursor_ptr (T *p)
 从原始指针构造,获取所有权。
 cursor_ptr (const cursor_ptr &cp)
 拷贝构造,仅复制游标位置,不转移所有权。
 cursor_ptr (cursor_ptr &&cp)
 移动构造,转移所有权。
 ~cursor_ptr ()
 析构,释放 original_ptr 指向的内存(使用 delete)。
void swap (cursor_ptr &cp)
 交换两个 cursor_ptr 的内容(包括所有者和游标)。
解引用与元素访问
T & operator* ()
T * operator-> ()
T & operator[] (size_t i)
T * get ()
 operator T* ()
const 版本解引用与元素访问
const T & operator* () const
const T * operator-> () const
const T & operator[] (size_t i) const
const T * get () const
 operator const T * () const
自增/自减运算符
cursor_ptroperator++ ()
cursor_ptr operator++ (int)
cursor_ptroperator-- ()
cursor_ptr operator-- (int)
指针算术运算
cursor_ptr operator+ (int sep) const
cursor_ptr operator- (int sep) const
const cursor_ptroperator+= (int sep)
const cursor_ptroperator-= (int sep)
int operator- (const cursor_ptr &cp) const
赋值运算符
const cursor_ptroperator= (T *p)
 从原始指针赋值,释放原有内存并接管新指针。
const cursor_ptroperator= (const cursor_ptr &cp)
 拷贝赋值,仅复制游标位置,不转移所有权。
const cursor_ptroperator= (cursor_ptr &&cp)
 移动赋值,转移所有权。

相等/不等比较

bool operator== (const cursor_ptr &cp) const
bool operator== (const T *p) const
bool operator!= (const cursor_ptr &cp) const
bool operator!= (const T *p) const
bool operator== (const T *p, const cursor_ptr &cp)
bool operator!= (const T *p, const cursor_ptr &cp)

Detailed Description

template<class T>
class console::cursor_ptr< T >

双指针游标智能指针(非数组版本)。

Template Parameters
T元素类型(非数组)。

通过 original_ptr 管理内存生命周期,current_ptr 支持指针运算。 复制构造/赋值仅复制游标位置而不转移所有权,移动构造/赋值转移所有权。

Warning
复制赋值要求源对象的生命周期覆盖目标对象的使用期。
指针运算不进行边界检查。
需确保 delete 与 new 匹配(本版本使用 delete)。

Constructor & Destructor Documentation

◆ cursor_ptr() [1/4]

template<class T>
console::cursor_ptr< T >::cursor_ptr ( )
inline

默认构造,两个指针均为 nullptr。

◆ cursor_ptr() [2/4]

template<class T>
console::cursor_ptr< T >::cursor_ptr ( T * p)
inline

从原始指针构造,获取所有权。

Parameters
p指向动态分配内存的指针(使用 new)。
Note
当前游标位置初始化为 p。

◆ cursor_ptr() [3/4]

template<class T>
console::cursor_ptr< T >::cursor_ptr ( const cursor_ptr< T > & cp)
inline

拷贝构造,仅复制游标位置,不转移所有权。

Parameters
cp源对象。
Note
新对象的 original_ptr 为 nullptr,不参与内存管理。

◆ cursor_ptr() [4/4]

template<class T>
console::cursor_ptr< T >::cursor_ptr ( cursor_ptr< T > && cp)
inline

移动构造,转移所有权。

Parameters
cp源对象,移动后其 original_ptr 置为 nullptr,current_ptr 保持不变。

◆ ~cursor_ptr()

template<class T>
console::cursor_ptr< T >::~cursor_ptr ( )
inline

析构,释放 original_ptr 指向的内存(使用 delete)。

Member Function Documentation

◆ get() [1/2]

template<class T>
T * console::cursor_ptr< T >::get ( )
inline

◆ get() [2/2]

template<class T>
const T * console::cursor_ptr< T >::get ( ) const
inline

◆ operator const T *()

template<class T>
console::cursor_ptr< T >::operator const T * ( ) const
inline

◆ operator T*()

template<class T>
console::cursor_ptr< T >::operator T* ( )
inline

◆ operator!=() [1/2]

template<class T>
bool console::cursor_ptr< T >::operator!= ( const cursor_ptr< T > & cp) const
inline

◆ operator!=() [2/2]

template<class T>
bool console::cursor_ptr< T >::operator!= ( const T * p) const
inline

◆ operator*() [1/2]

template<class T>
T & console::cursor_ptr< T >::operator* ( )
inline

◆ operator*() [2/2]

template<class T>
const T & console::cursor_ptr< T >::operator* ( ) const
inline

◆ operator+()

template<class T>
cursor_ptr console::cursor_ptr< T >::operator+ ( int sep) const
inline

◆ operator++() [1/2]

template<class T>
cursor_ptr & console::cursor_ptr< T >::operator++ ( )
inline

◆ operator++() [2/2]

template<class T>
cursor_ptr console::cursor_ptr< T >::operator++ ( int )
inline

◆ operator+=()

template<class T>
const cursor_ptr & console::cursor_ptr< T >::operator+= ( int sep)
inline

◆ operator-() [1/2]

template<class T>
int console::cursor_ptr< T >::operator- ( const cursor_ptr< T > & cp) const
inline

◆ operator-() [2/2]

template<class T>
cursor_ptr console::cursor_ptr< T >::operator- ( int sep) const
inline

◆ operator--() [1/2]

template<class T>
cursor_ptr & console::cursor_ptr< T >::operator-- ( )
inline

◆ operator--() [2/2]

template<class T>
cursor_ptr console::cursor_ptr< T >::operator-- ( int )
inline

◆ operator-=()

template<class T>
const cursor_ptr & console::cursor_ptr< T >::operator-= ( int sep)
inline

◆ operator->() [1/2]

template<class T>
T * console::cursor_ptr< T >::operator-> ( )
inline

◆ operator->() [2/2]

template<class T>
const T * console::cursor_ptr< T >::operator-> ( ) const
inline

◆ operator=() [1/3]

template<class T>
const cursor_ptr & console::cursor_ptr< T >::operator= ( const cursor_ptr< T > & cp)
inline

拷贝赋值,仅复制游标位置,不转移所有权。

Parameters
cp源对象。
Returns
const cursor_ptr& *this。

◆ operator=() [2/3]

template<class T>
const cursor_ptr & console::cursor_ptr< T >::operator= ( cursor_ptr< T > && cp)
inline

移动赋值,转移所有权。

Parameters
cp源对象。
Returns
const cursor_ptr& *this。

◆ operator=() [3/3]

template<class T>
const cursor_ptr & console::cursor_ptr< T >::operator= ( T * p)
inline

从原始指针赋值,释放原有内存并接管新指针。

Parameters
p新指针(使用 new 分配)。
Returns
const cursor_ptr& *this。

◆ operator==() [1/2]

template<class T>
bool console::cursor_ptr< T >::operator== ( const cursor_ptr< T > & cp) const
inline

◆ operator==() [2/2]

template<class T>
bool console::cursor_ptr< T >::operator== ( const T * p) const
inline

◆ operator[]() [1/2]

template<class T>
T & console::cursor_ptr< T >::operator[] ( size_t i)
inline

◆ operator[]() [2/2]

template<class T>
const T & console::cursor_ptr< T >::operator[] ( size_t i) const
inline

◆ swap()

template<class T>
void console::cursor_ptr< T >::swap ( cursor_ptr< T > & cp)
inline

交换两个 cursor_ptr 的内容(包括所有者和游标)。

Parameters
cp要交换的对象。

◆ operator!=

template<class T>
bool operator!= ( const T * p,
const cursor_ptr< T > & cp )
friend

◆ operator==

template<class T>
bool operator== ( const T * p,
const cursor_ptr< T > & cp )
friend

The documentation for this class was generated from the following file: