构造函数:
构造函数是类的成员函数,与类名同名。它有助于初始化类的对象。它可以接受参数,也可以不接受。它用于为类的对象分配内存。每当创建类的实例时都会调用它。它可以带参数或不带参数手动定义。一个类中可以有多个构造函数。它可以重载,但不能继承或虚拟。有一个复制构造函数的概念,用于从另一个对象初始化一个对象。
用法:
ClassName() { //Constructor's Body }
析构函数:
与构造函数一样,析构函数也是类的成员函数,该函数与类名同名,前面带有波形符 (~) 运算符。它有助于释放对象的内存。当类的对象被释放或删除时调用它。在类中,始终有一个不带任何参数的析构函数,因此不能重载。它总是以与构造函数相反的顺序调用。如果一个类被另一个类继承,并且两个类都有析构函数,则首先调用子类的析构函数,然后调用父类或基类的析构函数。
用法:
~ClassName() { //Destructor's Body }
注意:如果我们没有为类内的成员指定任何访问修饰符,则默认情况下成员的访问修饰符将为 Private。
构造函数和析构函数的示例/实现:
C++
#include <iostream>
using namespace std;
class Z
{
public:
// constructor
Z()
{
cout<<"Constructor called"<<endl;
}
// destructor
~Z()
{
cout<<"Destructor called"<<endl;
}
};
int main()
{
Z z1; // Constructor Called
int a = 1;
if(a==1)
{
Z z2; // Constructor Called
} // Destructor Called for z2
} // Destructor called for z1
输出:
Constructor called Constructor called Destructor called Destructor called
C++中构造函数和析构函数的区别:
S. 编号 | 构造函数 | 析构函数 |
---|---|---|
1. | 构造函数有助于初始化类的对象。 | 而析构函数用于销毁实例。 |
2. | 它被声明为类名(参数,如果有){构造函数的主体}. | 而它被声明为~ 类名(无参数){ }. |
3. | 构造函数可以接受参数,也可以不接受参数。 | 虽然它不能有任何参数。 |
4. | 创建类的实例或对象时会调用构造函数。 | 当类的对象被释放或删除时调用它。 |
5. | 构造函数用于为实例或对象分配内存。 | 而它用于释放类对象的内存。 |
6. | 构造函数可以重载。 | 虽然不能超载。 |
7. | 构造函数的名称与类名称相同。 | 这里,它的名称也与前面带有平铺(~)运算符的类名称相同。 |
8. | 在一个类中,可以有多个构造函数。 | 在一个类中,总是有一个析构函数。 |
9. | 有一个复制构造函数的概念,用于从另一个对象初始化一个对象。 | 而这里,没有复制析构函数的概念。 |
10. | 它们通常按连续顺序调用。 | 它们通常以与构造函数相反的顺序调用。 |
相关用法
- C++ Containership和Inheritance的区别用法及代码示例
- C++ Copysign()用法及代码示例
- C++ CHAR_MIN用法及代码示例
- C++ CHAR_MAX用法及代码示例
- C++ CHAR_BIT用法及代码示例
- C++ cos()用法及代码示例
- C++ sin()用法及代码示例
- C++ asin()用法及代码示例
- C++ atan()用法及代码示例
- C++ atan2()用法及代码示例
- C++ acos()用法及代码示例
- C++ tan()用法及代码示例
- C++ sinh()用法及代码示例
- C++ ceil()用法及代码示例
- C++ tanh()用法及代码示例
- C++ fmod()用法及代码示例
- C++ acosh()用法及代码示例
- C++ asinh()用法及代码示例
- C++ floor()用法及代码示例
- C++ atanh()用法及代码示例
- C++ log()用法及代码示例
- C++ trunc()用法及代码示例
- C++ round()用法及代码示例
- C++ lround()用法及代码示例
- C++ llround()用法及代码示例
注:本文由纯净天空筛选整理自MKS075大神的英文原创作品 Difference Between Constructor and Destructor in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。