【发布时间】:2012-08-08 14:01:36
【问题描述】:
有什么方法可以防止通过声明删除 C++ 中的指针?
我尝试了以下代码但没有运气。
const int* const foo()
{
static int a;
return &a;
}
int main()
{
const int* const a = foo();
*a = 1; //compiler error, const int*
a++; //compiler error, int* const
delete a; //no compiler error, I want to have compiler error here
return 0;
}
【问题讨论】:
-
好问题,+1,但我很确定,这是不可能的(除非你使用一些包装器/智能指针)
-
@Felics 那么你最终将如何释放内存呢?
-
@PaulManta 我不想释放内存,这就是重点。指针指向一个静态变量。
-
@PaulManta 我不想“解决问题”,我只想知道这是否可行。
-
没有。返回引用将是一个很好的信号,表明您不希望删除该对象。
标签: c++