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

请将下列构造函数补充完整,使得程序的运行结果是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++小白。。。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值