一、概述
类是一种用户自定义的类型,声明一个类对象时,编译程序要为对象分配存储空间,进行必要的初始化。在C++中,这项工作是由构造函数来完成的。
大部分对象在使用之前没有正确的初始化是C++出错的主要原因。
引入类的构造函数是正确的初始化类的对象,使该对象具有区别于其他对象的特征。
一般什么时候触发并调用类的构造函数呢?
答案是:当我们用类来定义一个类变量的时候,如下:
(1)当我们用类去建立一个对象时,它首先调用类的构造函数
class demo{.....}; 声明并定义好完整的类
(2)调用类的无参数的构造函数
demo d;
(3)按参数个数不同,调用类中不同的构造函数
demo d1(参数1,..)
二、定义
构造函数名和类名完全一样,可以根据不同的参数来实现重载不同的构造函数;构造函数是没有任何返回值的,它默认的是public,inline函数;
构造函数可以重载,可以是无参数,有参数,有默认参数)如下:
声明三个构造函数
代码如下
class item{
public:
item(std::string& book=\"\" ); //带默认形参的构造函数
item(std::string& ); //带形参的构造函数
item(); //无形参的构造函数
};
三、构造函数初始化成员变量的方法
如下面的类class demo(){
public:
//构造函数在下面添加
private:
int x;
int y;
std::string name;
};
构造函数初始化成员有两种方法:
A.使用构造函数的初始化列表进行初始化
格式:funname(参数列表):(初始化列表){}
初始化列表: 成员名1(形参名1),成员名2(形参名2),成员名n(形参名n)
代码:
demo(int a=0,int b=0,std::string s=\"\"):x(a),y(b),name(s){}
B.使用构造函数的函数体进行初始化
格式:funname(参数列表){函数体内赋值}
它和传统的C函数差不多
代码:
demo(int a=0,int b=0,std::string s=\"\"){
x=a;
y=b;
name=s;
}
四、初始化方式的选择
无参数的构造函数:主要用初始化列表来初始化成员变量
有参数的构造函数:默认形参+初始化列表的构造函数
由于忙着C++等级考试,还没有仔细的考虑这个函数与以前所学函数的区别,和为什么C++要设构造函数,只是大概看了下基础,待考完试可以认真研究一下这门语言。