现在我已经有了SmartPointers,我决定尝试使用DumbPointers,它在析构函数中调用"delete"非常困难.决定继续使用DumbPointer在SmartPointer中存储数组的测试,我回忆起之前的错误,并尝试了这个:
DumbPointer<char> dumbPointer = "Hello World\0";
Run Code Online (Sandbox Code Playgroud)
由于"也许这不是一个指针或正确的指针?"的未定义原因,它会导致程序挂起.当然,我想知道为什么,着眼于解决这个问题.我现在将在下面提供非常复杂的DumbPointer代码(也许我应该去睡觉):(让我再次向你保证:析构函数被调用)
#pragma once
#include "stdafx.h"
template <typename T> class DumbPointer
{
private:
T* myPtr;
public:
T* Value() { return myPtr; }
DumbPointer(const DumbPointer<T>& a)
{ throw new "No assignments between DumbPointer."; }
DumbPointer(T* ptr) { myPtr = ptr; }
DumbPointer(T value) { myPtr = &value; }
~DumbPointer() { delete myPtr; }
operator T*() { return myPtr; }
T* operator ->() { return myPtr; }
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |