带参数的构造函数
在上面的例子中,我们在student类中定义一个无参的构造函数,如下:
student(){
cout << "调用无参构造函数,设置默认值" <<endl;
strcpy(name, "wkf");
strcpy(addr, "www.mylinux.vip");
number = 13926572996;
}
在函数体中对各成员变量赋初值。这种方式使student类的每一个对象都得到同一组初值,但是,有时用户希望对不同的对象赋予不同的初值,这时就无法使用上面的办法来解决了。
可以采用“带参数的构造函数”,在调用不同对象的构造函数时,将不同的数据传递给构造函数,以实现不同的初始化。构造函数定义的一般格式为:
*构造函数名(类型*1 形参1*,类型2 形参2,* ... ...**)
注意:构造函数没有返回类型。
用户是不能调用构造函数的,因此,无法采用常规的调用函数的方法给出实参,例如 func(a, b); ,实参是在定义对象的时候给出的,定义对象的一般格式为:
类名对象名(实参1,实参2,** ... ...**)
例如,有2个学生,他们的年龄、性别、名字都不一样。那么,就需要定义带参数的构造函数,在定义学生对象的时候,给它们设置不同的属性。测试例子如下:
程序运行结果如下:
带参数的构造函数,定义如下:
student(char* pn, char* pa, longlong n)
在定义对象的时候,给对象设置参数,调用对应的构造函数,例如:
student stud("wkf", "www.mylinux.vip", 13926572996);
此时,调用构造函数,在 stud后面接的参数,就是传递给构造函数的参数,如下:
pn = "wkf";
pa = "www.mylinux.vip";
number = 13926572996;
然后,再调用构造函数,给对象的具体成员变量赋值。所以,可以知道:
(1) 定义类对象的时候,给类对象设置的参数,就是传递给构造函数的参数。
(2) 自己定义构造函数,可以方便地实现对不同的对象进行不同的初始化。例如,定义stud, stud1对象的时候,可以给对象设置不同的数据。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
版权归原作者 Linux编程学堂 所有, 如有侵权,请联系我们删除。