- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CProgrammingLanguage03
C++语言程序设计 ——对象生灭 主要内容 构造函数 析构函数 拷贝构造函数 对象赋值 对象生灭与动态存储 构造函数设计 初始化要求:对象与变量的不同在于对象对应于事物,要求从诞生之时起便有明确的意义 封装性要求:初始化不是简单的参数与成员对应,而是联系参数到成员的过程 构造函数名:该过程产生对象,而不是捆绑对象的成员函数调用,因而它是特殊的成员函数 形式:与变量的定义形式保持一致.构造函数原则上不能失败,也没有返回值 构造函数设计 类创建对象时需要对对象初始化,但初始化任务,只有由成员函数来完成,因此,在类中必须定义一个具有初始化功能的成员函数 每当创建一个对象时,就调用这个成员函数,实现初始化 C++建立和初始化对象的过程专门由该类的构造函数完成 对象建立时,调用该构造函数,给对象分配存储空间并进行初始化 构造函数设计 构造函数设计 这种将初始化工作交由初始化成员函数完成的方式使系统多了一道处理过程,增加了书写代码 另一种方法是建立对象的同时,自动调用构造函数,省去上述麻烦,使定义类对象时包含了为对象分配存储空间和初始化的双重任务。这种实现机制较为理想 由于类的唯一性和对象的多样性,因此C++规定构造函数与类同名 构造函数设计 What is the Constructor? Constructor is a function with the explicit purpose of initializing object. Because such a function constructs values of a given type, it is called a constructor. A constructor is recognized by having the same name as the class itself. When a class has a constructor, all objects of that class will be initialized by a constructor call. 构造函数定义 构造函数定义 构造函数定义 构造函数定义 注意: 同其它成员函数一样,在类体外定义构造函数,其函数名前要加上“类名::” 构造函数无返回类型 在定义时,若类的数据成员是另一个类的对象,则在调用构造函数创建对象时,对作为数据成员的对象先要自动调用其自身的构造函数 缺省构造函数 Default Constructors: A default constructor is a constructor that can be called without supplying an argument If a user has declared a default constructor. that one will be used; otherwise, the compiler will try to generate one if needed, and if the user hasn’t declared other constructors 缺省构造函数 C++语言规定: 每一个类必须有一个构造函数,没有构造函数就不能创建任何对象 若未定义一个类的构造函数,则C++ 提供一个缺省的构造函数,该缺省构造函数是一个无参数的构造函数,仅仅负责创建对象,而不做任何初始化工作 只要一个类定义了一个构造函数,C++ 就不再提供缺省的构造函数。如还需要无参数构造函数,则必须自己定义 与变量定义类似,在用缺省构造函数创建对象时,如果创建的是全局对象或静态对象,则对象成员数据全为0;局部对象创建时,其成员数据是无意义的随机数 初始化列表 缺省构造函数可采用以下两种方式将值赋给其成员 在构造函数体内进行成员变量的赋值,如前例中所示 使用函数体前的初始化列表,例如: 初始化列表 初始化列表在创建数据成员的同时为之提供初始值,效率更高 表达更加简洁 带参数的构造函数 不带参数的构造函数不能完全满足初始化的要求,因为这样创建的类对象具有相同的初始化值 如果需要对类对象按不同特征初始化不同的值,应采用带参数的构造函数 构造函数重载 同其它函数一样,构造函数可以被重载,C++ 根据类体中声明构造函数的参数类型和个数选择合适的构造函数,例如: 参数的默认值 参数的默认值 主要内容 构造函数 析构函数 拷贝构造函数 对象赋值 对象生灭与动态存储 析构函数 析构函数 析构函数示例 主要内容 构造函数 析构函数 拷贝构造函数 对象赋值 对象生灭与动态存储 拷贝构造函数 拷贝构造函数 拷贝构造函数 拷贝构造函数 拷贝构造函数 拷贝构造
文档评论(0)