gpt4 book ai didi

c++ - 智能指针实现

转载 作者:太空狗 更新时间:2023-10-29 21:43:34 25 4
gpt4 key购买 nike

我不会写所有的代码,但我正在看一个智能指针示例实现,它有:

template<typename T>
class smart_ptr
{

public:
operator void*() const {return mPtr;}

const T& operator*() const;
T& operator*();

const T* operator->() const;
T* operator->();

private:
T* mPtr;
};
  1. API 中第一个公共(public)函数的用途是什么?
  2. 为什么我们需要常量重载其他两个 API 方法?
  3. 不仅是 const-overload,为什么还有 return-const-object 变体?

最佳答案

operator void* 函数是一个类型转换函数,所以你可以这样写:

smart_ptr foo;
void* ptr = foo; // The compiler will call `operator void*` here

甚至

if( foo) {  // `operator void*` called to test boolean expression
//...
}

函数

const T& operator*() const;

const T* operator->() const;

const,因此您可以在 const smart_ptr 上调用它们。因为它们将 pointer/reference 返回给 const 对象,所以不能更改该对象。

关于c++ - 智能指针实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com