c++构造函数

12.1 类与对象

1. 类与对象的区别

一个类描述一类事物,描述这些事物所应共有的属性。一个对象是类的一个实例,它具有确定的属性。

2.对象的初始化

   1.C++建立和初始化对象的过程专门由该类的构造函数来完成。C++另外还有一类析构函数,它也是类的成员函数,当对象撤销时,就会马上被调用,其作用是释放与对象捆绑的资源,做一些善后处理。

2.每个类只负责初始化它自己的对象。

12.2 构造函数的重要性

  由于类的保护数据在外界是不能访问的,所以需要使用构造函数来对类对象的初始化。

12.3 构造函数的使用

  1.C++规定与类同名的成员函数是构造函数,在该类的对象创建时,自动被调用。 与成员函数相同,构造函数可以放在类的外部定义。

  2.在外部定义的构造函数,其函数名前要加上“类名::”,这和别的成员函数定义方法一样。

  3.构造函数没有返回类型,函数体中也不允许返回值,但可以有无值返回语句“return;”。

  4.如果一个类对象是另一个类的数据成员,则在创建那个类的对象所调用的构造函数中,对该成员(对象)自动调用其构造函数。

12.4 析构函数

  1.析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载。他只是在类对象生命期结束的时候,由系统自动调用。

  2.类的每个对象生命期结束时,都要调用析构函数,这与构造函数形成鲜明的对立,所以析构函数名就在构造函数名前加一个逻辑非运算符“~”,表示“逆构造函数”。

12.5 带参数的构造函数

  1.下面的程序定义了一个带参数的学生类:

   

   

2.构造函数在参数规定上和普通函数一样,可以有任意多个参数。

12.6 重载构造函数

  1.参数函数可以被重载,C++会根据声明中的参数选择合适的构造函数。

12.7 默认构造函数

  1.C++规定,每个类必须有一个构造函数,如果没有构造函数,就不能创建任何对象。

  2.若未提供一个类的构造函数(一个都未提供),则C++提供一个默认的构造函数,该默认构造函数是一个无参构造函数,它仅负责创建对象空间,而不做任何初始化工作。

  3.只要一个类定义了一个构造函数(不一定是无参构造函数),C++就不在提供默认的构造函数。也就是说,如果为类定义了一个带参数的构造函数,还想要无参构造函数,则必须自己定义。

  4.与定义变量类似,在用默认构造函数创建对象时,如果创建的时全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的。

 5.无参构造函数定义时不能带括号,否则就是声明一个普通函数。

12.8 类函数初始化的困惑

  1.若一个类的对象时另一个类的数据成员,在声明此数据成员时不能对其进行初始化,只能按照格式“类型 表示符;”去声明类的数据成员。

例如:

12.9 构造类成员

  1.类成员初始化形式

   

   在Student的构造函数头的后面,冒号表示后面要对类的数据成员的构造函数进行引用。ssID是Student构造函数的形参,id(ssID)表示调用以ssID为实参的StudentID构造函数。若Student构造函数头冒号后面是id()的形式,表示调用 StudentID的默认构造函数,并且可以省略。

12.10 构造对象的顺序

   1.创造对象的唯一途径是调用构造函数。

   2.局部和静态对象,以声明的顺序构造。

   3.所有全局对象都在主函数main()之前被构造。

   4.全局对象构造时无特殊顺序,为了避免错误,不要允许一个全局对象访问另一个全

局对象。

5.成员及其在类中声明的顺序构造    

例如:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值