构造函数


作用:

处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同的是。构造函数不需要用户来调用他,而是建立对象时自动执行。构造函数的名字必须与类名相同,而不能由用户任意命名它,以便于编译系统能够识别他并把他当作构造函数处理。它不具备任何类型,不返回任何值,构造函数的功能是由用户定义的,用户根据初始化的要求设计构造函数。

特点:

构造函数声明为public,否则不能声明对象;

名字必须和类名相同;

不能有返回值;

可以带参数初始化;

如果用户没有定义构造函数,c++编译系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,没有参数,也不能初始化操作。

默认构造函数:不是说构造函数没有参数,而是调用时可以不传参。

每一个类必须至少一个构造函数。

带参数的构造函数:在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数,以实现不同的初始化

定义对象时,参数的个数需和构造函数的参数个数相匹配;

classThing{

public:

Thing(inta=10,intb=20,intc=30){

x=a;

y=b;

z=c;

}

voidprintThing(){

cout<<"x="<<x<<endl;

cout<<"y="<<y<<endl;

cout<<"z="<<z<<endl;

}

private:

intx;

inty;

intz;

};

intmain(intargc,char*argv[])

{

Thingt;

t.printThing();

Things(1);

s.printThing();

Thingr(2,3);

r.printThing();

Thingv(4,5,6);

v.printThing();

cout<<"HelloC-Free!"<<endl;

return0;

}

重载构造函数:

在一个类里面可以定义多个构造函数,以便提供不同的初始方法,供用户选用,这些构造函数有相同的名字,但是构造参数或参数的类型不同。

调用函数时不必给出 实参的构造函数,称为默认构造函数;一个类只能有一个默认构造函数

尽管在一个类中可以包含多个无参构造函数,但是对于一个对象来说,建立对象时只执行一个构造函数

在构造函数头的位置,对类的成员变量进行初始化,叫做初始化列表。

例如:Thing:Thing(intx,inty);member1(x),member2(y){};

初始化列表的格式为:成员变量(赋给成员变量的值)

初始化列表的优势是:效率更高一些,有一些类型的成员变量只能通过初始化列表的形式进行初始化,如const、引用

classThing{

public:

Thing():x(77),y(44),z(23){};

Thing(inta,intb):x(a),y(b){};

Thing(inta,intb,intc);

Thing(inta);

voidprintThing(){

cout<<"x="<<x<<"y="<<y<<"z="<<z<<endl;

}

private:

intx;

inty;

intz;

};

Thing::Thing(inta):x(a){};

Thing::Thing(inta,intb,intc):x(a),y(b),z(c){};

intmain(){

Thingt;

t.printThing();

Thingh(1);

h.printThing();

Thingr(2,3);

r.printThing();

Thingv(4,5,6);

v.printThing();

return0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值