普通变量可以使用赋值号(=)赋值,但是由于类的数据成员众多,所以使用构造函数用于构造对象。
构造函数也是类的成员函数,除了有成员函数的所有特征外,还有一些不同之处:构造函数的函数名跟类名一样,而且没有返回值。构造函数一般被声明为公有函数,除非我们不允许某个类生成对象则将它声明为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);