C++ 类的析构函数和构造函数

构造函数

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。主要用来在创建对象时初始化对象即为对象成员变量赋初始值。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

****:

#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;
}

//out:
//Object is being created
//Length of line : 6

带参数的构造函数

#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;
}

构造函数有以下特点:

1.构造函数的名字必须与类名相同;

2.构造函数可以有任意类型的参数,但不能具有返回类型;

3.定义对象时,编译系统会自动地调用构造函数;

4.构造函数是特殊的成员函数,函数体可以在类体内,也可写在类体外;

5.构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。

析构函数

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

#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;
}

析构函数在下边3种情况时被调用

1. 对象生命周期结束被销毁时
2. delete指向对象的指针时,或者delete指向对象的基类类型的指针,而基类析构函数是虚函数
3. 对象A是对象B的成员,B的析构函数被调用时,对象A的析构函数也会被调用

相关推荐

  1. C++ 函数构造函数

    2023-12-22 07:32:05       67 阅读
  2. C++ 构造函数 & 函数

    2023-12-22 07:32:05       67 阅读
  3. C++ 构造函数 & 函数

    2023-12-22 07:32:05       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 07:32:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 07:32:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 07:32:05       82 阅读
  4. Python语言-面向对象

    2023-12-22 07:32:05       91 阅读

热门阅读

  1. 音频的一些关键词

    2023-12-22 07:32:05       64 阅读
  2. Go 语言中并发的威力

    2023-12-22 07:32:05       59 阅读
  3. 一套rk3588 rtsp服务器推流的 github 方案及记录 -02

    2023-12-22 07:32:05       46 阅读
  4. 工具:Edge问题解决教程

    2023-12-22 07:32:05       72 阅读
  5. 解决Edge浏览器问题的实用教程

    2023-12-22 07:32:05       47 阅读
  6. Linux下nginx添加stream模块支持Tcp转发

    2023-12-22 07:32:05       65 阅读
  7. Nginx/Tomcat/SpringBoot配置自生成SSL证书

    2023-12-22 07:32:05       74 阅读
  8. eclipse部分常用快捷键的使用

    2023-12-22 07:32:05       57 阅读
  9. rpc【通义】rpc原理【gpt】

    2023-12-22 07:32:05       51 阅读
  10. 【LeetCode】225. 用队列实现栈(Queue接口 & Deque类)

    2023-12-22 07:32:05       71 阅读
  11. 单例模式的七种写法

    2023-12-22 07:32:05       65 阅读