错误总结 char*指向空指针

本文分析了C++中类`man`的构造函数实现,讨论了如何正确初始化成员变量(如`name`和`xingBie`),以及使用`constchar*`和`string`类型的区别,强调了内存分配和错误处理的重要性。
摘要由CSDN通过智能技术生成

class man{

public:

man(const char*name,const char*xingBie");

private:

char*name;

char*xingBie;

}

//第一种

man::man(const char*name,const char*xingBie){

//注意此时name,和性别要初始化,此时name和xingBie是 空指针,运行时会错误

name=new char[64];

xingBie=new char[128];

if (this->name)
    {//由于name为指针,不可name=name;xingBie=xingBie
        strcpy_s(this->name,64, name);
    }
    if (this->xingBiei)
    {
        strcpy_s(this->xingBie,128, xingBie);
    }

}

//第二种

man::man(const char*name,const char*xingBie)

:  name{new char[64]{0}},xingBie{new char[128]{0}  }

{

//注意此时name,和性别要初始化,此时name和xingBie是 空指针,运行时会错误

//this可以理解为指向本身的指针

if (this->name)
    {//由于name为指针,不可name=name;xingBie=xingBie
        strcpy_s(this->name,64, name);
    }
    if (this->xingBiei)
    {
        strcpy_s(this->xingBie,128, xingBie);
    }

}

名字和性别也可以通过string与const char*

class man{

public:

man(const char*name,const char*xingBie");

private:

string name;

string xingBie;

}

man(const char*name,const char*xingBie"){

//此时name与xin gBie不在是指针

//const char*   =>只读常量

this->name=name;

this->xingBie=xingBie;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值