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

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

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-24 18:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家晚上好,今天给大家分享的是c++中的构造函数,这段时间可能分享c++、Uboot、linux内核的文章会比较多一点,自己的拖延症太强了,得改掉这个坏习惯来。每天进步一点点,日积月累你也是专家。

一、构造函数:

1、什么是构造函数?

关于这个构造函数,简单理解就是在一个类中,有一个函数,它的函数名称和类名同名,而且这个构造函数没有返回值类型的说法( Test()这个函数就是构造函数了。):

#include <stdio.h>

class Test:

public:

Test()

printf("Test()");

2、构造函数调用:

(1)一般情况下,构造函数在定义时自动被调用(主要作用就是自动去初始化类中的属性,这个属性通俗一点来说,就是我们所说的变量。而且这里的自动的意思,就是说当你创建了一个对象后,它就会自动调用构造函数,不用你再去main函数里面写构造函数了。):

#include <stdio.h>

class Test

public:

Test()

printf("Test()");

};

int main()

Test t; // 调用 Test()

return 0;

演示结果如下:

root@txp-virtual-machine:/home/txp/c++# ./a.out

Test()

(2)一些特殊情况下,需要手工来调用构造函数(这个在下面带参数的构造函数里面会有一个案例分析)

二、带参数的构造函数:

(1)构造函数可以根据需要定义参数。

class Test

public:

Test(int v)

};

(2)一个类中可以存在多个重载的构造函数(什么重载函数,简单来说,可以同函数名,但是它的传参类型或者返回类型不同就是重载函数了。)下面来看一个具体带参构造函数案例:

#include <stdio.h>

class Test

private:

int m_value;

public:

Test()

printf("Test()");

m_value = 0;

Test(int v)

printf("Test(int v), v = %d", v);

m_value = v;

int getValue()

return m_value;

};

int main()

Test ta[3] = {Test(), Test(1), Test(2)};

for(int i=0; i<3; i++)

printf("ta[%d].getValue() = %d", i , ta[i].getValue());

Test t = Test(100);

printf("t.getValue() = %d", t.getValue());

return 0;

演示结果如下:

root@txp-virtual-machine:/home/txp/c++# ./a.out

Test()

Test(int v), v = 1

Test(int v), v = 2

ta[0].getValue() = 0

ta[1].getValue() = 1

ta[2].getValue() = 2

Test(int v), v = 100

t.getValue() = 100

三、实战案例:

需求:开发一个数组类解决原生数组的安全性问题:

——提供函数获取数组长度

——提供函数获取数组元素

——提供函数设置数组元素

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

    关注

    7

    文章

    531

    浏览量

    45502
  • C++
    C++
    +关注

    关注

    22

    文章

    2139

    浏览量

    77500
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2026年PHP 8 JIT与C++扩展性能实测:用Gemini镜像站剖析执行效率与调优策略(国内直访教程)

    国内PHP开发者在决定是否启用JIT编译器或编写C++扩展时,常缺乏直观的性能对比数据和配置指南。借助大模型解读opcode、分析函数调用开销并给出优化建议,本教程将深入PHP 8 JIT的触发机制
    的头像 发表于 05-27 23:06 107次阅读
    2026年PHP 8 JIT与<b class='flag-5'>C++</b>扩展性能实测:用Gemini镜像站剖析执行效率与调优策略(国内直访教程)

    使用VectorCAST/C++的AI辅助测试功能

    从2026版本开始,VectorCAST/C++推出首批AI辅助测试功能,旨在帮助开发团队解决单元测试过程的两个核心难点:
    的头像 发表于 04-27 14:37 421次阅读

    C++与lua联合编程

    在现代软件工程的庞大架构,纯粹的 C++ 与动态脚本语言之间的关系,早已演变成场精密的“商业分工”。C++ 扮演着提供极致性能的“底层重工业”,而 Lua 则充当着实现灵活业务逻
    发表于 04-19 16:27

    C++:const 的空间,常量也能占内存?

    5g.5jh.dg8sg.cnJIWWQc++语言 c++语言5g.Zq2.dg8sg.cnJIWWQc++语言 def lock_tetromino(self): \"\"\"将落地的方块锁定到网格
    发表于 04-16 19:19

    keil实现cc++混合编程

    参考touchgfx生成的代码,发现了个不需要添加--cpp11 参数的解决方法,具体操作如下。 、创建个空白的C文件和头文件在头文件
    发表于 01-26 08:58

    C语言与C++的区别及联系

    创建源文件时什么都不给,默认是.cpp。 3、返回值 C语言中,如果函数没有指定返回值类型,默认返回int类型;C++,如果
    发表于 12-24 07:23

    CC++之间的联系

    控制能力,这点与C语言相似,使得它们在系统编程、嵌入式系统等领域都得到广泛应用。 3、发展历程: C++正是在C语言的基础上逐步发展起来的,C
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是种面向过程的语言,它强调的是通过函数将任务分解为系列步骤进行执行。 C++
    发表于 12-11 06:23

    C/C++条件编译

    条件编译是种在编译时根据条件选择性地包含或排除部分代码的处理方法。在 C/C++ ,条件编译使用预处理指令 #ifdef、#endif、#else 和 #elif 来实现。常用的条
    发表于 12-05 06:21

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的CC++编程过程难免会碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。
    发表于 12-02 07:12

    激活函数ReLU的理解与总结

    : 下面解释上述公式的softplus,Noisy ReLU。 softplus函数与ReLU函数接近,但比较平滑,同ReLU样是单边抑制,有宽广的接受域(0,+inf),
    发表于 10-31 06:16

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

     Perforce Validate  QAC 项目的相对/根路径的支持。C++ 分析也得到了增强,增加了用于检测 C++ 并发问题的新检查,并改进了实体名称和实
    的头像 发表于 10-13 18:11 818次阅读
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代码静态测试工具Perforce QAC 2025.3的新特性

    技能+1!如何在树莓派上使用C++控制GPIO?

    和PiGPIO等库,C++可用于编程控制树莓派的GPIO引脚。它提供了更好的性能和控制能力,非常适合对速度和精度要求较高的硬件项目。在树莓派社区,关于“Python
    的头像 发表于 08-06 15:33 4615次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    C语言中的内联函数与宏

    C编程,内联函数和宏都用于避免函数调用的开销并编写可复用的逻辑部分,但它们在工作方式和安全性方面存在显著差异。
    的头像 发表于 07-25 15:10 2164次阅读
    <b class='flag-5'>C</b>语言中的内联<b class='flag-5'>函数</b>与宏

    基于LockAI视觉识别模块:C++目标检测

    本文档基于瑞芯微RV1106的LockAI凌智视觉识别模块,通过C++语言做的目标检测实验。本文档展示了如何使用lockzhiner_vision_module::PaddleDet类进行目标检测,并通过lockzhiner_vision_module::Visualize函数
    的头像 发表于 06-06 13:56 1077次阅读
    基于LockAI视觉识别模块:<b class='flag-5'>C++</b>目标检测