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

    文章

    517

    浏览量

    44202
  • C++
    C++
    +关注

    关注

    22

    文章

    2114

    浏览量

    73932
收藏 人收藏

    评论

    相关推荐

    Spire.XLS for C++组件说明

    Spire.XLS for C++款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序。Spire.XLS fo
    的头像 发表于 01-14 09:40 192次阅读
    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 465次阅读

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

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

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

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

    ostream在c++的用法

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

    ModusToolbox 3.2在c代码包含c++代码的正确步骤是什么?

    使用 ModusToolbox 3.2 我有个用纯 C 语言编写的 XMC4700 项目。 我正在尝试添加C++ 函数,并将其合并到
    发表于 07-23 08:21

    C++实现类似instanceof的方法

    C++有多态与继承,但是很多人开始学习C++,有时候会面临个常见问题,就是如何向下转型,特别是不知道具体类型的时候,这个时候就希望C++
    的头像 发表于 07-18 10:16 689次阅读
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>实现类似instanceof的方法

    神经网络的激活函数有哪些

    在神经网络,激活函数个至关重要的组成部分,它决定了神经元对于输入信号的反应方式,为神经网络引入了非线性因素,使得网络能够学习和处理复杂的模式。本文将详细介绍神经网络中常用的激活
    的头像 发表于 07-01 11:52 696次阅读

    Perforce静态代码分析专家解读MISRA C++:2023®新标准:如何安全、高效地使用基于范围的for循环,防范未定义行

    的特定规则。 什么是MISRA C++:2023规则9.5.2,为什么它很重要? MISRA C++:2023 引入了规则 9.5.2 “for-range 初始值设定项最多应包含函数
    的头像 发表于 06-18 12:57 514次阅读

    FX2 CY7C68013A如何在C++环境中使用LoadEEPROM函数

    我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 库中有我需要的 LoadEEPROM 函数。 请问如何在 C++ 环境而不是 C#/CLR 环境中使用该
    发表于 05-31 06:59

    鸿蒙OS开发实例:【Native C++

    使用DevEco Studio创建个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C
    的头像 发表于 04-14 11:43 2813次阅读
    鸿蒙OS开发实例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两篇博客,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客,我们将仔细研究以 C++
    的头像 发表于 03-28 13:53 884次阅读
    使用 MISRA <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误

    简单总结下嵌入式C++中常见的错误形式

    对于 C++ 类,些关键字只要写在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static 等关键字,如果在 cpp 多写,编译器会报错。
    的头像 发表于 02-23 09:40 607次阅读