上一节,我们讲了类与对象的概念,但是涉及到了类的初始化。
类的初始化其实就是指类成员的赋值。
一、类成员赋值的几种方法
1.直接初始化
在类的结构中,直接对成员进行初始化,有一个前提:前提就是所有的数据成员都是公有的,且没有声明任何构造函数。
有的人可能会想问为什么不能声明构造函数,具体,我们可以通过代码来验证。
数据成员定义为公有,并声明构造函数–代码块无错误提示,编译报错。
#include<iostream>
using namespace std;
class CA
{
public:
CA();//代码块,无错误提示,编译报错。
~ CA();
public:
int m_num;
};
int main()
{
CA ca;
ca.m_num = 1;//直接初始化
return 0;
}
运行结果:
数据成员定义为公有,无构造函数–代码块无错误提示,编译成功。
#include<iostream>
using namespace std;
class CA
{
public:
//成员函数;
public:
int m_num;
};
int main()
{
CA ca;
ca.m_num = 1;//直接初始化
return 0;
}
运行结果:
注意:但是我们通常不建议在类的结构里面去直接初始化数据成员,更多的是通过构造函数、公有的成员函数、以及成员初始化列表进行初始化。
2.构造函数初始化
#include<iostream>
using namespace std;
class CA
{
public:
//构造函数
CA(int a)
{
this->m_num = a;
}
//实现了构造函数后,一定要记得实现析构函数,否则报错
~CA()
{
}
//公有的函数-验证是否成功初始化
int Getnum()
{
return this->m_num;
}
private:
int m_num;
};
//程序入口
int main()
{
CA ca(1);//创建时,在类对象后加括号,括号里面加实参即可实现构造函数初始化
cout << ca.Getnum() << endl;
return 0;
}
运行结果:
注意:实现了构造函数后,一定要记得实现析构函数,否则报错,析构函数的逻辑可以为空,但不能仅为声明
3.成员初始化列表初始化
#include<iostream>
using namespace std;
class CA
{
public:
//第一种:成员初始化列表进行初始化
CA() :m_num(1)
{
}
//第二种:成员初始化列表进行初始化
CA(int a) :m_num(a)
{
}
~CA()
{
}
int Getnum()
{
return this->m_num;
}
private:
int m_num;
};
int main()
{
CA ca;
cout << ca.Getnum() << endl;
CA ca1(6);
cout << ca1.Getnum() << endl;
return 0;
}
运行结果:
4.公有函数初始化
#include<iostream>
using namespace std;
class CA
{
public:
CA()
{
}
~CA()
{
}
//通过公有的成员函数来对成员进行初始化
void Setnum(int a)
{
this->m_num = a;
}
//获取成员的值并返回--验证是否成功进行初始化
int Getnum()
{
return this->m_num;
}
private:
int m_num;
};
int main()
{
CA ca;
ca.Setnum(8);//类对象调用公有成员函数,对成员进行初始化
cout << ca.Getnum() << endl;//类对象调用Get方法,验证是否进行初始化
return 0;
}
运行结果:
关于C++的学习,欢迎大家关注我,对我的文章进行评论,点赞,收藏,关注我不迷路。也欢迎广大网友跟我探讨C++的干货。C++的知识,远远不止这么点,我们一 一进行分析讲解。网友有什么想让我来进行讲解的,可以评论留言,我也会尽我所能给大家去做好讲解。
作者:ProMer_Wang
链接:https://blog.csdn.net/qq_43801020/article/details/106880711
本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!