构造函数

来源:互联网 发布:照片变成素描的软件 编辑:程序博客网 时间:2024/06/15 00:47

无参构造函数

对类的对象进行初始化(对数据成员赋初始值)是一个好的习惯,用构造函数来实现。使具体对象有确定内容。

Time

{public:

Time()//声明无参构造函数

Time:Time(){a=0; b=0; c=0;}// 定义构造函数      

Time t1;

t1.settime()

1.实例化类对象时自动调用构造函数,建立一个对象,就执行且执行一次;

2.用一个类对象初始化另一个类对象    

Time t1;

Time t2 = t1;


 有参构造函数

无参构造函数(各对象同一组初值)-有参构造函数(不同对象不同初值)

类内声明 Box(int,int,int);

类外定义 Box::Box(int h, intw, int len){height=h, width=w,length=len};

建立对象传入初值 Box box1(1, 2,3);

 

以上也可用参数化列表

用参数化列表时,若数据成员是数组,则只能在函数体(即花括号中)用语句赋值:

class Student

{public:

Student(int n,char s,nam[])::num(n),sex(s) { strcpy(name,nam); }

Private:

int num; char sex; charname[20];

定义对象 Student stud1(101,‘m’,“Wang”)

 

构造函数重载

一个类中定义多个构造函数,为对象提供不同的初始化方法,供用户选用;有相同的名字而参数的个数类型不同;

Student(){num=1,score=10}//无参

Student(int n,ints)::num(n),score(s)//有参

Student stu1;//分别调用

Student stu2(2,20); //分别调用

说明:对象建立时只选一个构造函数执行

 

两种默认构造函数

Box(int=1,int=2,int=3);//建立对象时给0-3个实参都可以,比较自由不会出错

Box();//无参构造函数

说明:

1.建立对象时不用给出实参的构造函数为默认构造函数,一个类必须有且仅有一个默认构造函数(如果没有系统生成一个,但不起初始化作用,如果要初始化则必须自己定义)

2.在声明构造函数时就需要指定参数的默认值,如Box(int=1,int=2,int=3);

3.为了避免歧义性,一般在使用构造函数的重载的时候包括有默认参数的构造函数


0 0
原创粉丝点击