一个对象的两个指针.删除了一个指针,对象仍然存在
Two pointers for one object. Deleted one pointer, the object is still there
class sphere {
int radius;
public:
sphere(int r){
radius = r;
}
void setRadius(int r) {
radius = r;
}
int getRadius() {
return radius;
}
};
int main()
{
sphere *a, *b;
a = new sphere(1);
b = a;
delete b;
cout << a->getRadius() << endl;
return 0;
}
此代码实际上在控制台上打印出1
。根据这篇文章,半径为 1 的球体应该被删除。
我的问题是:
为什么它不返回 SegFault?我期待一个SegFault,因为由于球体被删除,->getRadius
将不再可用于a
。
因为C++标准不需要执行SegFault。这只是未定义的行为,这取决于您的编译器,甚至月相的环境
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它