type
date
status
slug
summary
tags
category
icon
password
网址
构造函数与析构函数
数据成员多为私有的,要对它们进行初始化,必须用一个公有函数来进行。同时这个函数应该在且仅在定义对象时自动执行一次。称为构造函数。
构造函数用途:
1)创建对象,2)初始化对象中的属性,3)类型转换。
“有空间不一定有对象,有对象一定有空间”
构造函数是特殊的公有成员函数(在特殊用途中构造函数的访问限定可以定义成私有或保护)
特征:
1.函数名与类名相同。
2.构造函数无函数返回类型说明。注意是没有而不是void,即什么也不写,也不可写void。实际上构造函数有返回值,返回的就是构造函数所创建的对象。
3.在程序运行时,当新的对象被建立,该对象所属的类构造函数自动被调用,在该对象生存期中也只调用这一次。
4.构造函数可以重载。严格地讲,类中可以定义多个构造函数,它们由不同的参数表区分,系统在自动调用时按一般函数重载的规则选一个执行。
5.构造函数可以在类中定义,也可以在类中声明,在类外定义。
6.如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省的构造函数:
类名(void) { }
但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数。只要构造函数是无参的或者只要各参数均有缺省值的,C++编译器都认为是缺省的构造函数,并且缺省的构造函数只能有一个 。
*类中定义声明&&类中声明,类外定义:
类中定义声明--自然inline关系;
类中声明,类外定义--需要添加inline函数才内联关系。
重点:
1.对象模型--创建对象时,在主函数创建的对象的分布情况和类的设计一致
2.存储空间和对象无关--“有空间不一定有对象,有对象一定有空间”,必须调用构造函数
3.this指针--类的成员函数均有
析构函数
当定义一个对象时,C++自动调用构造函数建立该对象并进行初始化,那么当一个对象的生命周期结束时,C++也会自动调用一个函数注销该对象并进行善后工作,这个特殊的成员函数即析构函数。(资源)
- 构函数名与类名相同,但在前面加上字符‘~’,如 : ~CGoods()。
- 析构函数无函数返回类型,与构造函数在这方面是一样的。但析构函数不带任何参数。
- 一个类有一个也只有一个析构函数,这与构造函数不同。
- 对象注销时,系统自动调用析构函数。
- 如果类说明中没有给出析构函数,则C++编译器自动给出一个缺省的析构函数。 如: ~类型名称() {}
*字面常量&&变量 初始化
按位拷贝 按位赋值
构造函数任务:
1.创建对象;
2.初始化对象数据;
3.类型转换。