0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++:详谈构造函数

如意 来源:百家号 作者:cherrydreamsover 2020-06-29 11:44 次阅读

构造函数

1.概念

构造函数:一个特殊的成员函数,名字与类名相同,创建类类型对象的时候,由编译器自动调用,在对象的生命周期内只且调用一次,以保证每个数据成员都有一个合适的初始值。

2.构造函数的特性

函数名和类名相同;

没有返回值;

有初始化列表(可以不用);

新对象被创建,由编译器自动调用,且在对象的生命周期内仅调用一次;

构造函数可以重载,实参决定了调用哪个构造函数;

如果没有显示的调用时,编译器会提供一个默认的构造函数;

无参构造函数和带有缺省值的构造函数都认为是缺省构造函数,并且缺省构造函数只能有一个;

构造函数不能用const修饰(因为const修饰类的成员函数时,该函数不能修改成员变量,但是构造函数要修改类的成员变量,因此不可以由const修饰)

3.初始化列表

C++:详谈构造函数

以冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。

4.初始化顺序

数据成员在类中定义的顺序就是参数列表中的初始化顺序;

初始化列表仅用于初始化数据成员,并不指定这些数据成员的初始化顺序;

每个成员在初始化列表中只能出现一次;

尽量避免使用成员初始化成员,成员初始化顺序最好和成员的定义顺序保持一致。

类中包含以下成员必须要放在初始化列表中初始化:

(1)引用数据类型

(2)const数据类型

(3)类类型成员(该类没有缺省的构造函数)

5.默认构造函数

默认构造函数使用与成员变量初始化相同的规则初始化成员,对于内置类型和复合类型的成员,如组、指针,只对定义在全局定义作用于的对象初始化,对于局部作用域的内置和复合类型不作初始化。

6.构造函数的作用

构建对象

初始化对象

类型转换

7.explcit

用explicit修饰构造函数,抑制由构造函数定义的隐式转换,explicit关键字类内部的构建声明上,在类的定义体外部的定义上不再重复。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73480
  • 构造函数
    +关注

    关注

    0

    文章

    5

    浏览量

    2733
收藏 人收藏

    评论

    相关推荐

    请问STM32 C++构造函数怎么修改才能实现全局变量的初始化呢?

    在STM32F10X项目中使用了C++的特性,使用arm-none-eabi-g++编译,程序可以正常运行。问题: C++定义的全局变量,其类的构造函数不被执行,在
    发表于 10-10 08:45

    C++教程之函数的递归调用

    C++教程之函数的递归调用 在执行函数 f 的过程中,又要调用 f 函数本身,称为函数的递归调用;形式上:一个正在执行的
    发表于 05-15 18:00 35次下载

    C++课程资料详细资料合集包括了:面向对象程序设计与C++,算法,函数

    本文档的主要内容详细介绍的是C++课程资料资料合集包括了:面向对象程序设计与C++,算法,函数,概述, C++语言基础,构造数据类型,数据类
    发表于 07-09 08:00 18次下载
    <b class='flag-5'>C++</b>课程资料详细资料合集包括了:面向对象程序设计与<b class='flag-5'>C++</b>,算法,<b class='flag-5'>函数</b>等

    如何深度解析C++拷贝构造函数详细资料说明

    本文档的主要内容详细介绍的是如何深度解析C++拷贝构造函数详细资料说明。
    发表于 07-05 17:41 0次下载
    如何深度解析<b class='flag-5'>C++</b>拷贝<b class='flag-5'>构造</b><b class='flag-5'>函数</b>详细资料说明

    如何在中断C函数中调用C++

    之前,我们在单片机程序开发时都会面对中断函数。众所周知的,这个中断函数肯定是要用C函数来定义的。我在用C++进行程序开发的时候就发现了一个需
    发表于 05-09 18:17 0次下载
    如何在中断<b class='flag-5'>C</b><b class='flag-5'>函数</b>中调用<b class='flag-5'>C++</b>

    Linux共享库的构造函数和析构函数

    共享库有类似C++构造和析构函数函数,当动态库加载和卸载的时候,函数会被分别执行。一个函数
    的头像 发表于 06-22 09:18 2306次阅读
    Linux共享库的<b class='flag-5'>构造</b><b class='flag-5'>函数</b>和析构<b class='flag-5'>函数</b>

    C++详谈拷贝构造函数

    只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为拷贝构造函数。拷贝构造
    的头像 发表于 06-29 11:45 2108次阅读
    <b class='flag-5'>C++</b>:<b class='flag-5'>详谈</b>拷贝<b class='flag-5'>构造</b><b class='flag-5'>函数</b>

    C++详谈析构函数的特性和使用

    构造函数功能相反,在对象被销毁时,由编译器自动调用,完成类的一些资源清理和汕尾工作。
    的头像 发表于 06-29 11:53 2378次阅读
    <b class='flag-5'>C++</b>:<b class='flag-5'>详谈</b>析构<b class='flag-5'>函数</b>的特性和使用

    C++之拷贝构造函数的浅copy及深copy

    C++编译器会默认提供构造函数;无参构造函数用于定义对象的默认初始化状态;拷贝构造
    的头像 发表于 12-24 15:31 706次阅读

    c++构造函数学习的总结(一)

    关于这个构造函数,简单理解就是在一个类中,有一个函数,它的函数名称和类名同名,而且这个构造函数
    的头像 发表于 12-24 18:06 699次阅读

    EE-128:C++中的DSP:从C++调用汇编类成员函数

    EE-128:C++中的DSP:从C++调用汇编类成员函数
    发表于 04-16 17:04 2次下载
    EE-128:<b class='flag-5'>C++</b>中的DSP:从<b class='flag-5'>C++</b>调用汇编类成员<b class='flag-5'>函数</b>

    C++ C语言函数查询电子版下载

    C++ C语言函数查询电子版下载
    发表于 01-18 10:15 0次下载

    深度解析C++中的虚函数

    函数作为C++的重要特性,让人又爱又怕,爱它功能强大,但又怕驾驭不好,让它反咬一口,今天我们用CPU的角度,撕掉语法的伪装,重新认识一下虚函数。 虚函数
    的头像 发表于 02-15 11:14 808次阅读
    深度解析<b class='flag-5'>C++</b>中的虚<b class='flag-5'>函数</b>

    浅析C++执行构造函数编程实例

    C++保证在你调用delete时,先自动调用析构函数(而我们安排在这个函数里面删除它的法杖、法袍等对象),再删除对象占用的内存。
    发表于 03-03 15:44 272次阅读

    C++基础知识之函数1

    函数C++ 中的一个重要概念,它可以让我们将一段代码封装起来,然后在需要的时候调用它。C++ 中的函数有以下几个特点: * 函数
    的头像 发表于 04-03 10:34 529次阅读