普通变量可以使用赋值号(=)赋值,但是由于类的数据成员众多,所以使用构造函数用于构造对象。

构造函数也是类的成员函数,除了有成员函数的所有特征外,还有一些不同之处:构造函数的函数名跟类名一样,而且没有返回值。构造函数一般被声明为公有函数,除非我们不允许某个类生成对象则将它声明为private或protected属性。编译器碰到对象声明语句时,会自动生成对构造函数的调用语句,所以我们常说构造函数是在对象声明时由系统自动调用的。

构造函数为成员变量赋值的方式有两种:1.初始化列表 2.在函数体内赋值

在对一般变量初始化时,两种方式并没有太大区别。但是当类的成员变量是另一个类时(嵌套类),只能使用初始化列表初始化。

//例子
class A
{
 A(A em){};//A的拷贝构造函数
};

class B()
{
  B(A elem);
}

B::B(A el):A(el)//由el传给em
{
...
}

PS:拷贝构造函数,拷贝构造函数相当于人工设定,类对象的赋值方式。使对象与对象之间的互相赋值可控。

A test;

//....

A a = A(test);

 

 

 

posted on 2012-12-29 15:10  曾健  阅读(162)  评论(0编辑  收藏  举报