C++拷贝构造函数大全

来源:互联网 发布:上海it helpdesk招聘 编辑:程序博客网 时间:2024/04/30 10:24
//构造函数
/*定义:是一个特殊的成员函数,对对象进行初始化,构造函数名字必须与类名同名,无类型,无返回值,
不需要用户调用,也不能被用户调用,在建立对象时自动执行
*/
class box
{
public:
box();//默认构造函数,什么也不做,若用户不显示声明,创建对象时,自动执行

box(int, int, int);//声明带参数的构造函数
box(int l=10, int w=10, int h=10);/*在声明构造函数时指定默认参数
构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,
如果用户不指定实参值,编译系统就使形参取默认值
注意:应在声明函数时指定默认值,而不能只在定义构造函数时指定默认值*/
int volume;
private:
int length;
int width;
int height;
};
box::box(int l, int w, int h):length(l), width(w),height(h)
{}/*用参数初始化表对数据进行初始化,若数据成员是数组,则应当在构造函数的
函数体中用语句对其赋值,不能在参数初始化表中对其初始化*/
box::box(int l, int w, int h)//在类外定义带参数的构造函数
{
     length = l;
width = w;
height = h;
}
/*定义拷贝(复制)构造函数
只有单个形参,而且该参数是对本类对象的引用(常用const修饰),
拷贝构造函数是特殊的构造函数,由编译器自动调用,它是构造函数
的重载,它的参数必须使用同类型对象的引用传递(为什么?),
如果没有显示定义,系统会自动合成一个默认的拷贝构造函数,会依
次对拷贝类的数据成员完成初始化*/
box::box(const box&b)
{
length = b.length;
width = b.width;
height = b.height;


}
0 0