构造与析构函数

news/2024/5/19 0:09:47 标签: C++, 构造函数, 析构函数, 拷贝构造函数

     作用:创建类对象,并初始化其成员。(可定义多个进行重载)
 
     注:构造函数可以有参数,无返回类型,不能是虚函数,在类体外定义时其函数名前加上“类名 : :”,可重载
            若一个类对象是另一个类对象的数据成员,那么在构造函数创建对象时,作为数据成员的类对象要先调用自身的构造函数;(局部到整体)


     作用:撤销类对象,回收资源

     注:析构函数无参数,无返回类型,不能重载
            析构函数以调用构造函数相反的顺序被调用(整体到局部)

3、有参构造函数

     无参构造创建的类对象具有相同的初始化值,若需类对象按不同特征初始化不同的值,应采用有参构造函数

     初始化方式:
     一般初始化          :函数体内初始化;
     初始化列表初始化:函数体外初始化;

     几种须在构造函数初始化列表中初始化的情况:
     a.const成员
     b.引用成员
     c.有参构造对象成员(对象对应的类没有默认构造函数

     转换构造函数
     定义:构造函数只有一个参数,且该参数不是本类的const引用时,称为转换构造
     作用:将一个其他类型的数据转换成一个类的对象
     禁止转换构造:在单个参数的构造函数前加上关键字“explicit“,阻止转换构造,阻止定义对象时使用等号初始化对象;

4、缺省构造函数

     C++规定,每个类必须有一个构造函数,没有构造函数就不能创建对象。若未定义构造函数,则C++提供一个缺省构造函数,该缺省构造函数是一个无参构造函数,仅创建对象,不进行初始化。若类中定义了构造函数,则C++不再提供缺省构造函数。如果还需要无参构造函数,必须自定义。

     一个类若什么都没有被称为空类,一个空类的大小为1字节,并且编译器会为其隐式生成6个成员。

5、拷贝构造

     格式:<类名 > : : <拷贝构造函数名>(<类名>&<引用名>)
     作用:用一个对象值创建并初始化另一个对象;
     特点:
              a.拷贝构造函数名与类同名,无返回类型;
              b.拷贝构造函数只有一个形参,该参数是对该类对象的引用。
     注:若一个类中未定义拷贝构造函数,则系统自动生成一个缺省拷贝构造函数,将已知对象的所有数据成员的值拷贝给对应对象的数据成员
     其他作用:
                    a.将对象作为实参进行函数调用时,系统自动调用拷贝构造函数将对象值传递给形参对象;
                    b.当函数返回值为对象时,系统自动调用拷贝构造函数用返回对象值创建一个临时对象,然后再将临时对象值赋给接收函数返回值的对象;


http://www.niftyadmin.cn/n/1353755.html

相关文章

输入输出流、模板

1、输入输出流 在C中&#xff0c;用面向对象的方法实现流。为了实现流&#xff0c;从上到下定义了几种流类&#xff1a;a. ios 是抽象流基类b. ios 的派生类 istream 是输入流基类c. ios 的派生类 ostream 是输出流基类d. iostream 是输入/输出流类&#xff0c;由 istream 和 o…

命名空间与异常处理

1、命名空间 命名空间是一个逻辑上的类型组织系统&#xff0c;用来对程序中的类型进行逻辑上的分组&#xff0c;并使定义在同一个命名空间中的类可以利用命名空间直接相互调用。C有命名空间机制&#xff0c;关键字为 namespace。库或程序中每个C定义集被封在一个命名空间中&am…

汇编基础

前面粗略地整理了C和C的一些基础性的知识点&#xff0c;在这过程中也加深了其中一些重要知识点的理解。虽然还远谈不上有多么地深入浅出&#xff0c;至少还算符合当初写博客的初衷&#xff1a;乐于分享&#xff0c;利人利己&#xff01;接下来对汇编语言作一个大致的整理和总结…

80X86寻址方式与常见汇编指令

1、指令指令&#xff1a;操作码和操作数组成(不定有操作数)&#xff1b;操作码&#xff1a;执行操作&#xff0c;用一个唯一的助记符表示&#xff0c;对应着机器指令的一个二进制编码&#xff1b;操作数&#xff1a;操作对象&#xff0c;可以是数值&#xff0c;寄存器或存储器地…

OPCode及汇编

1、OPCode操作码(Operation Code&#xff0c;OPCode)&#xff1a;描述机器语言指令中&#xff0c;指定要执行某种操作的机器码。OPCode与指令的对应关系&#xff1a;同类型的指令&#xff0c;OPCode不一定相同&#xff1b;B8 01000000 mov eax&#xff0c;1B8C7 …

Windows编程概念及框架

1、控制台程序与Windows窗口程序比较在控制台程序中&#xff0c;入口函数是 main 函数&#xff0c;预处理宏为_CONSOLE&#xff0c;用于在预处理时包含控制台程序用到的一些宏或头文件&#xff1b;在Windows窗口程序中&#xff0c;入口函数是 WinMain 函数&#xff0c;预处理宏…

Windows窗口及对话框

1、Windows窗口介绍在Windows系统中&#xff0c;每个窗口对象都对应有一个数据结构&#xff0c;形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理窗口&#xff0c;这个数据结构中有四个数据用来构建list&#xff0c;即child、sibling、parent、owner四个域…

GDI编程与动态链接库

1、GDI(图形设备接口)Windows应用程序不支持标准输出函数(如printf)&#xff0c;应用程序输出包括文字在内的所有数据都是以图形方式“绘制”到窗口上。Windows通过图形设备接口GDI对图形输出进行支持。GDI由函数和相关数据类型、宏定义以及结构体组成。主要有&#xff1a;获取…