相关疑难解决方法(0)

在C++中使用指针的简单代码的行为

假设我们有以下代码:

sphere * a, * b;
a = new sphere(1.0);
b = a;
b->setRadius(2.0);
delete b;
a->setRadius(4.0);
sphere * c = new sphere(5.0);
b = new sphere(3.0);
cout << a->getRadius() << endl;
Run Code Online (Sandbox Code Playgroud)

结果会是什么:

(a) 4.0
(b) 3.0
(c) A segmentation fault.
(d) Compiler error.
(e) The behavior cannot be predicted.
Run Code Online (Sandbox Code Playgroud)

我不认为你需要看球体类,因为它很明显是什么.现在,当我们设置时b=a,这意味着b指向a.然后我们delete b,这意味着我们删除b指向的东西,这意味着a现在不再指向任何东西了.所以,当我们试着说a->setRadius,我们不能.所以我认为那是一个seg fault.我是以正确的方式看待这个吗?

c++ pointers

1
推荐指数
1
解决办法
146
查看次数

标签 统计

c++ ×1

pointers ×1