成员变量初始化有三种方式:
在构造函数体内赋值初始化
在自定义的公有函数体中赋值初始化(一般用于成员变量的初始化)
在构造函数的成员初始化列表初始化
一、构造函数体内初始化
说明:在构造函数体内的初始化方式,本质是是为成员变量赋值,而不是真正意义上的初始化,这点要特别注意!(下面介绍成员初始化列表时会有演示案例对比说明)
class Cperson
{
private:
int m_age;
float m_height;
char* m_name;
public:
Cperson(int age,float height,const char* name)
{
m_age=age;
m_height=height;
if(m_name)//先判断当前是否为空
delete[] m_name;
if(name)//如果外部传入的不为空
{
int len=strlen(name);
m_name=new char[len+1];//创建内存
strcpy(t m_name,name);
}
else
m_name=nullptr;
}
}
二、自定义的公有函数体中赋值初始化
说明:与构造函数体内初始化方式一样,此种方式本质上也是赋值,而不是初始化
class Cperson
{
private:
int m_age;
float m_height;
char* m_name;
public:
void setPerson(