c++ - 我如何定义一个将任何类型的指针值作为参数的函数?

标签 c++ pointers assignment-operator

我正在实现智能指针类的练习。

我已经定义了一个赋值运算符重载,它采用同一类的另一个实例。现在我想定义这个运算符的重载,它接受任何指针。所以我应该能够做类似 smartPointer = &someObject;smartPointer = NULL; 等的事情

我该怎么做呢?我应该传入一个 void* 吗?还有别的吗?

作为一个更一般的问题(我知道这很少需要):什么样的参数告诉编译器可以传入任何指针?

最佳答案

您可以使用模板函数让您的对象允许任何指针分配给它。

template<typename T>
void operator=(T* obj)
{
    //Your code here
}

但是,如果您可以为它分配任何原始指针,它就不是智能指针,因为它可以分配给多个智能指针对象,然后在删除指针时会出现问题。

关于c++ - 我如何定义一个将任何类型的指针值作为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267510/

相关文章:

c++ - C++ 中的 copy_if ……有问题

c++ - c++ 类实例成员是如何在机器级别传递的?

c++ - 如何将具有 "deleted"复制构造函数和赋值运算符的类放入映射中?

c - 如何为双指针分配内存并且它应该在 f1、f2 和 f3 中可见?

Javascript:如何将另一个对象 B 的方法混合到我的对象 A 中而不进行复制但进行链接?

Javascript 字符串赋值运算符

c++ - lambda 对象 + c 回调 sigsegv

c++ - Qt->QGraphicsView->QGraphicsItem 调整大小

c++ - 编译 RInside 代码时出错

c++ - 正确销毁指向对象的指针