企业网站建设方案教程,网站建设 技术团队,电商网站运营流程,wordpress页面混乱C自学精简教程 目录(必读)
1 为什么需要定义构造函数#xff1f;
构造函数主要用来给成员变量初始化。
让类对象有一个良好的开始状态。
2 构造函数初始化成员变量
下面我们来完善上一篇文章中的几个构造函数。
让这些构造函数完成给成员变量初始化的职责。
为此#…C自学精简教程 目录(必读)
1 为什么需要定义构造函数
构造函数主要用来给成员变量初始化。
让类对象有一个良好的开始状态。
2 构造函数初始化成员变量
下面我们来完善上一篇文章中的几个构造函数。
让这些构造函数完成给成员变量初始化的职责。
为此我们也把成员变量加上来。
构造函数示例
struct Student
{//默认构造函数 default constructorStudent() {};//非默认构造函数给m_age成员初始化Student(int age):m_age(age) {};//非默认构造函数,给两个成员变量初始化Student(int age, bool sex):m_age(age), m_sex(sex){};//非默认构造函数,给3个成员变量初始化Student(int age, bool sex, string name):m_age(age), m_sex(sex),m_name(name){};private:int m_age;//年龄bool m_sex;//性别string m_name;//姓名
};int main()
{Student stu1;//调用默认构造函数Student stu2(10);//调用带一个整形参数的构造函数Student stu3(10, true);//调用两个参数的那个构造函数Student stu4(DengXiaoPing, 10, true);//调用3个参数的那个构造函数return 0;
}构造函数的写法
构造函数给成员变量初始化的写法
类构造函数(构造函数参数列表) : 成员变量1(参数1), 成员变量2(参数2),.... {}//函数体
Student(int age,bool sex):m_age(age),m_sex(sex){};
注意那个冒号必不可少哦
调试验证
构造函数真的初始化成员变量了吗是的。 各个对象使用不同构造函数构造后各自成员变量的值 成员初始化的特点
从上图我们可以看出
1成员变量m_name是类类型的
如果你在构造函数中通过传入的参数初始化了m_namem_name就用你初始化的值。
如果你没有在构造函数中初始化m_name它就调用string的默认构造函数初始化自己。
string 的默认构造函数将自己构造为一个空字符串。
2成员变量是基本类型的
如果你没有在构造函数中初始化它它的值是随机的值。
比如m_age-858993460, m_sextrue 。
注至于m_sex为什么还显示了204我也不清楚我估计是计算机最小的地址单位是字节而bool类型只占用了字节的一个位。所以计算机就干脆显示了那个字节里的内容给我们看我猜的毕竟这已经不是C的内容了。
默认构造函数
3 不定义构造函数成员变量就不初始化了吗
不定义构造函数编译器就会替我们合成一个默认构造函数。
默认构造函数对于成员变量是类类型的调用这个成员变量所在类的默认构造函数初始化
对于成员变量是基本类型的C没有规定你可以认为是随机值。