我正在阅读一些关于删除指针参数的Stack Overflow答案,特别是这些答案(1,2),因为我正在构建一个需要作为参数的指针的函数。
以下是该函数的简化版本:
void draw(Shape * b)
{
//Draws code....
}
我现在困惑的是删除操作。例如,如果函数被这样调用:
Shape * c;
draw(&c);
那么我就不需要删除任何东西。但如果情况是这样的:
draw(new Shape{});
我的问题是,如果在参数中使用 new
关键字,我应该如何进行删除。这些函数不会引发任何异常,因此不需要 RAII。有什么想法吗?请不要建议使用智能指针,因为我已经打算这样做了,这只是我的好奇心。同时,请知道该函数既可以使用 new 操作符,也可以使用现有指针,基本上意味着我需要一种区分两者的方法。对于我的链接:它们并不能解答我的问题,因为大部分都依赖于智能指针或某个调用。