构造函数

晨曦之光 发布于 2012/05/16 17:05
阅读 135
收藏 0


作用:

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

特点:

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

名字必须和类名相同;

不能有返回值;

可以带参数初始化;

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

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

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

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

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

class Thing{

public:

Thing(int a=10,int b=20,int c=30){

x=a;

y=b;

z=c;

}

void printThing(){

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

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

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

}

private:

int x;

int y;

int z;

};

int main(int argc, char *argv[])

{

Thing t;

t.printThing();

Thing s(1);

s.printThing();

Thing r(2,3);

r.printThing();

Thing v(4,5,6);

v.printThing();

cout<<"Hello C-Free!"<<endl;

return 0;

}

重载构造函数:

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

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

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

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

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

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

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

class Thing{

public:

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

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

Thing(int a,int b,int c);

Thing(int a);

void printThing(){

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

}

private:

int x;

int y;

int z;

};

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

Thing::Thing(int a,int b,int c):x(a),y(b),z(c){};

int main(){

Thing t;

t.printThing();

Thing h(1);

h.printThing();

Thing r(2,3);

r.printThing();

Thing v(4,5,6);

v.printThing();

return 0;

}




原文链接:http://blog.csdn.net/xy849288321/article/details/7353803
加载中
返回顶部
顶部