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

    文章

    526

    浏览量

    44817
  • C++
    C++
    +关注

    关注

    22

    文章

    2119

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    C++学到什么程度可以找工作?

    C++开发的工作不仅需要深厚的编程功底,还要具备解决实际问题的能力,以及良好的沟通能力和团队协作精神。此外,持续学习和更新自己的知识体系也是保持竞争力的关键。
    发表于 03-13 10:19

    创建了用于OpenVINO?推理的自定义C++和Python代码,从C++代码获得的结果与Python代码不同是为什么?

    创建了用于OpenVINO?推理的自定义 C++ 和 Python* 代码。 在两个推理过程中使用相同的图像和模型。 从 C++ 代码获得的结果与 Python* 代码不同。
    发表于 03-06 06:22

    Spire.XLS for C++组件说明

    Spire.XLS for C++款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序。Spire.XLS fo
    的头像 发表于 01-14 09:40 ?686次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    EE-112:模拟C++的类实现

    电子发烧友网站提供《EE-112:模拟C++的类实现.pdf》资料免费下载
    发表于 01-03 15:15 ?0次下载
    EE-112:模拟<b class='flag-5'>C++</b><b class='flag-5'>中</b>的类实现

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    /C++代码快速迁移至HarmonyOS NEXT。凭借卓越的兼容性,AKI已成为厂商与开发者打造鸿蒙原生应用过程中广泛使用的跨语言调用解决方案。 AKI是款专为鸿蒙原生开发设计的FFI(外部函数接口
    发表于 01-02 17:08

    同样是函数,在CC++中有什么区别

    同样是函数,在 CC++ 中有什么区别? 第个返回值。 C语言的函数可以不写返回值类型,
    的头像 发表于 11-29 10:25 ?959次阅读

    C++新手容易犯的十个编程错误

    简单的总结下?C++ 新手容易犯的些编程错误,给新人们提供个参考。 1 有些关键字在 cpp 文件
    的头像 发表于 11-15 12:42 ?1065次阅读

    傅里叶变换的数学原理

    傅里叶变换的数学原理主要基于种将函数分解为正弦和余弦函数(或复指数函数)的线性组合的思想。以下是对傅里叶变换
    的头像 发表于 11-14 09:27 ?1882次阅读

    ADL-GPIB IEEE 488命令集函数参考手册

    使用 Microsoft Visual C/C++ 创建个 Windows 2000/NT/98 ADL-GPIB 应用程序 通过使用 ADL-GPIB 和 Microsoft Visual
    发表于 11-04 17:43 ?2次下载

    C语言和C++结构体的区别

    同样是结构体,看看在C语言和C++中有什么区别?
    的头像 发表于 10-30 15:11 ?827次阅读

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 ?0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器

    使用OpenVINO GenAI API在C++构建AI应用程序

    许多桌面应用程序是使用 C++ 开发的,而将生成式AI(GenAI)功能集成到这些应用程序可能会很具有挑战性,尤其是因为使用像 Hugging Face 这样的 Python 库的复杂性。C++
    的头像 发表于 10-12 09:36 ?1188次阅读
    使用OpenVINO GenAI API在<b class='flag-5'>C++</b><b class='flag-5'>中</b>构建AI应用程序

    ostream在c++的用法

    ostream 是 C++ 标准库中个非常重要的类,它位于 头文件(实际上,更常见的是通过包含 头文件来间接包含 ,因为 包含了 和 )。 ostream 类及其派生类(如 std::cout
    的头像 发表于 09-20 15:11 ?1986次阅读

    基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll

    安全的线程池功能。 ThreadPoll维护个任务队列,个线程组。开发者只需向任务队列中注册需要进行的任务,线程组执行任务队列的任务。 C++公共基础类库的Thread头文件在
    发表于 08-12 11:42