【发布时间】:2013-09-17 04:08:18
【问题描述】:
我想保证我传递给函数的指针不能在这个函数内部被删除(我的意思是编译器在处理这样的函数时会产生错误)。以下是原来的情况。
void foo(Bar *bar) { delete bar; }
现在我尝试了一些方法没有成功。
void foo(Bar *bar) { delete bar; }
void foo(const Bar * const bar) { delete bar; } { delete bar; }
template <typename T> void foo(const T &t) { delete t; } // calling foo(bar);
我想知道有什么方法可以禁止删除指针,如果不可能,为什么要这样做?
【问题讨论】:
-
既然被标记为
C++,我无法抗拒...void foo(Bar& bar)? -
你为什么要抗拒?这是正确的答案。
-
@Chad(舌头在脸颊上)
delete &bar;););) -
delete不是实例方法。 -
如果您不想删除指针,请不要通过指针传递。为了使指向的对象 100% 安全,请按值传递。