您的位置:首页 > 其它

请将下列构造函数补充完整,使得程序的运行结果是5

2017-08-12 09:23 92 查看

请将下列构造函数补充完整,使得程序的运行结果是5

原题地址:https://www.nowcoder.com/test/question/done?tid=9799426&qid=46329#summary

#include<iostream>

using namespace std;

class Sample{
public:
Sample(int x){
________
}
~Sample(){
if(p) delete p;
}
int show(){
return *p;
}
private:
int*p;
};

int main(){
Sample S(5);
cout<<S.show()<<endl;
return 0;
}


A : *p=x;

B : p=new int(x);

C : *p=new int(x);

D : p=&x;

解析:

A、*p = x,把x的值赋值给指针p指向的内存空间,但是p之前没有指向任何一块内存空间,所以这个操作非法

B、p = new int(x),新申请一块内存空间,内存空间中的值是x,并且把这块内存空间赋值给p,p也就指向了这块内存空间。并且程序结束后也不释放这块内存空间。

C、*p = new int(x)。由于p之前没有指向任何一块内存空间,所以直接给*p赋值是错误的。(*p表示p指向的内存空间。)

D、p = &x,表示把x的地址赋值给p,但是这里的x 是形参,函数调用结束后x就被释放了,所以*p就找不到x了。

最后正确答案是:B

有错误请批评指正,作者是正在学习中的c++小白。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐