C++入门基础知识140—【关于C++ 类构造函数 析构函数】

devtools/2024/11/14 7:52:10/

成长路上不孤单😊😊😊😊😊😊

【14后😊///C++爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】

今日分享关于C++ 类构造函数 & 析构函数的相关内容!

关于【C++ 类构造函数 & 析构函数】

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

下面的实例有助于更好地理解构造函数的概念:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

#include <iostream>

using namespace std;

class Line

{

   public:

      void setLength( double len );

      double getLength( void );

      Line();  // 这是构造函数

   private:

      double length;

};

// 成员函数定义,包括构造函数

Line::Line(void)

{

    cout << "Object is being created" << endl;

}

void Line::setLength( double len )

{

    length = len;

}

double Line::getLength( void )

{

    return length;

}

// 程序的主函数

int main( )

{

   Line line;

   // 设置长度

   line.setLength(6.0);

   cout << "Length of line : " << line.getLength() <<endl;

   return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:

带参数的构造函数

默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值,如下面的例子所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#include <iostream>

using namespace std;

class Line

{

   public:

      void setLength( double len );

      double getLength( void );

      Line(double len);  // 这是构造函数

   private:

      double length;

};

// 成员函数定义,包括构造函数

Line::Line( double len)

{

    cout << "Object is being created, length = " << len << endl;

    length = len;

}

void Line::setLength( double len )

{

    length = len;

}

double Line::getLength( void )

{

    return length;

}

// 程序的主函数

int main( )

{

   Line line(10.0);

   // 获取默认设置的长度

   cout << "Length of line : " << line.getLength() <<endl;

   // 再次设置长度

   line.setLength(6.0);

   cout << "Length of line : " << line.getLength() <<endl;

   return 0;

当上面的代码被编译和执行时,它会产生下列结果:

使用初始化列表来初始化字段

使用初始化列表来初始化字段:

上面的语法等同于如下语法:

假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,同理地,您可以使用上面的语法,只需要在不同的字段使用逗号进行分隔,如下所示:

类的析构函数

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

下面的实例有助于更好地理解析构函数的概念:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

#include <iostream>

using namespace std;

class Line

{

   public:

      void setLength( double len );

      double getLength( void );

      Line();   // 这是构造函数声明

      ~Line();  // 这是析构函数声明

   private:

      double length;

};

// 成员函数定义,包括构造函数

Line::Line(void)

{

    cout << "Object is being created" << endl;

}

Line::~Line(void)

{

    cout << "Object is being deleted" << endl;

}

void Line::setLength( double len )

{

    length = len;

}

double Line::getLength( void )

{

    return length;

}

// 程序的主函数

int main( )

{

   Line line;

   // 设置长度

   line.setLength(6.0);

   cout << "Length of line : " << line.getLength() <<endl;

   return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:


http://www.ppmy.cn/devtools/133481.html

相关文章

使用 C# `Stopwatch` 实现函数 `Test01`的运行时间计算

1. 文档概述 本文档介绍了如何使用 C# 提供的 Stopwatch 类来实现对函数 Test01 执行时间的计时功能。Stopwatch 是 .NET Framework 中用于测量时间间隔的类&#xff0c;可以高精度地记录代码段的执行时间。此文档将指导如何集成 Stopwatch 到代码中&#xff0c;并提供实际的示…

Tokenformer:基于参数标记化的高效可扩展Transformer架构

本文是对发表于arXiv的论文 “TOKENFORMER: RETHINKING TRANSFORMER SCALING WITH TOKENIZED MODEL PARAMETERS” 的深入解读与扩展分析。主要探讨了一种革新性的Transformer架构设计方案&#xff0c;该方案通过参数标记化实现了模型的高效扩展和计算优化。 论文动机 如今的人…

好算法的特性

【课堂笔记】 ### 课堂笔记&#xff1a;好算法的特性 1. **正确性**&#xff1a; - 符合语法要求&#xff0c;能够编译和链接。 - 能够正确处理各种类型的输入&#xff0c;包括&#xff1a; - 简单的输入。 - 大规模的输入。 - 一般性的输入。 - 退…

贪心算法-汽车加油

这道题目描述了一个汽车旅行场景&#xff0c;需要设计一个有效的算法来决定在哪几个加油站停车加油&#xff0c;以便最小化加油次数。题目给出了汽车加满油后的行驶距离n公里&#xff0c;以及沿途若干个加油站的位置。我们需要找出一个方案&#xff0c;使得汽车能够完成整个旅程…

ssm基于Web的汽车客运订票系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容…

Redis 配置

语法 Redis CONFIG 命令格式如下&#xff1a; redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME实例 redis 127.0.0.1:6379> CONFIG GET loglevel1) "loglevel" 2) "notice"使用 * 号获取所有配置项&#xff1a; 实例 redis 127.0.0.1:63…

Arrays.sort与Collections.sort:深入解析Java中的排序算法

在Java编程中&#xff0c;排序是一项至关重要的操作&#xff0c;它能够帮助我们高效地管理和处理数据。Java标准库提供了多种排序方法&#xff0c;其中Arrays.sort和Collections.sort是最常用的两种。尽管它们都旨在实现数据的排序&#xff0c;但在实现细节、算法选择以及应用场…

使用 React Native WebView 实现 App 与 Web 的通讯

使用 React Native WebView 实现 App 与 Web 的通讯 在移动应用开发中&#xff0c;常常需要在应用中嵌入网页&#xff0c;并实现 App 与 Web 之间的通讯。React Native 提供了一个强大的组件——react-native-webview&#xff0c;可以帮助我们实现这一功能。在这篇文章中&…