C++中构造函数和析构函数的区别
构造函数 :
构造函数是一个与类名相同的成员函数。它有助于初始化类的对象。它可以接受参数或不接受参数。它用于分配类的对象的内存。每次创建类的实例时都会调用它。它可以手动定义有参数或无参数。一个类中可以有多个构造函数。它可以重载,但不能继承或虚拟化。有一种复制构造函数的概念,它用于从另一个对象初始化一个对象。
语法:
析构函数 :
和构造函数一样,析构函数也是一个与类名相同的成员函数,前面带有波浪线(~)运算符。它有助于释放对象的内存。在类中,总是有一个不带任何参数的析构函数,因此它不能重载。它总是在构造函数的相反顺序中调用。如果一个类被另一个类继承,且两个类都有一个析构函数,则首先调用子类的析构函数,然后调用父类或基类的析构函数。
语法:
注意: 如果我们没有为类内的成员指定任何访问修饰符,则默认成员的访问修饰符为Private。
构造函数和析构函数的例子/实现:
输出:
C++中构造函数和析构函数的区别:
序号 | 构造函数 | 析构函数 |
---|---|---|
1. | 构造函数用于初始化类的对象。 | 而析构函数用于销毁实例。 |
2. | 构造函数声明为 className( arguments if any ){Constructor’s Body } 。 | 而析构函数声明为 ~ className( no arguments ){ } 。 |
3. | 构造函数可以有参数也可以没有。 | 而析构函数不能有任何参数。 |
4. | 实例或类的对象被创建时调用构造函数。 | 它在类的对象被释放或删除时调用。 |
5. | 构造函数用于分配实例或对象的内存。 | 而析构函数用于释放类的对象的内存。 |
6. | 构造函数可以被重载。 | 而析构函数不能被重载。 |
7. | 构造函数的名称与类名相同。 | 而析构函数的名称为类名前加上波浪号(~)运算符。 |
8. | 在一个类中,可以有多个构造函数。 | 而在一个类中,永远只有一个析构函数。 |
9. | 有一个复制构造函数的概念,用于从另一个对象初始化对象。 | 而这里没有复制析构函数的概念。 |
10. | 构造函数和析构函数通常按顺序调用。 | 析构函数通常按构造函数的相反顺序调用。 |