构造函数是在定义对象时必须要调用的函数,与之相对的是执行完对象之后的析构函数。
构造函数,函数名为类名且没有返回值。
构造函数分为默认构造函数和带有参数的构造函数,在定义类时没有指定任何的构造函数,则在创建对象时,系统会自动调用隐含的构造函数,而若用户定义了构造函数则所有的对象创建都需要指定构造函数,系统将不会自动跳用隐含的构造函数。
默认构造函数的生命以及定义:
class base
{
public:
base( );
private:
int a;
};
base::base( )
{
a=1;
}
int main()
{
base son;//不可加括号
base son=base( );
return 0;}
带有参数的构造函数,可以在函数体中进行初始化,也可以利用函数参数列表进行初始化
class base
{
public:
base(int x,int y);
private:
int a,b;
};
base::base(int x,int y)
{
a=x;
b=y;
}
or
base ::base(int x,int y):a(x),b(y)
{
}
int main()
{
base son(2,3);
return 0;
}
注 : 没有默认构造函数的类类型的成员,以及const或引用类型的成员,不管是哪种类型,都必须在构造函数初始化列表中进行初始化。
默认实参与构造函数
class base
{
public:base(int x=1,int y=1);
private: int a,b;
}
base::base(int x,int y):a(x),b(y){ }
int main()
{
base son;//默认实参
base son1(1.5)//指定一个实参,剩余的实参值为默认实参值
base son2(1.5,1.5)//指定全部实参
return 0;}
注 :初始化实参的顺序为在类中声明变量的顺序。