构造函数和析构函数区别
时间: 2024-03-22 12:19:59 浏览: 122
构造函数和析构函数是 C++ 类中的两个特殊成员函数,它们有以下区别:
1. 构造函数用于在创建对象时对成员变量进行初始化,而析构函数用于在对象被销毁时释放资源以及执行一些清理工作。
2. 构造函数的名称与类名称相同,没有返回值,可以有参数,而析构函数的名称也与类名称相同,但前面有一个波浪号(~),也没有返回值和参数。
3. 构造函数在对象创建时调用,而析构函数在对象销毁时调用。
4. 类可以有多个构造函数,但只能有一个析构函数。
5. 构造函数可以被重载,即一个类可以有多个构造函数,而析构函数不能被重载,每个类只能有一个析构函数。
总之,构造函数和析构函数是 C++ 类中的重要成员函数,在对象的生命周期中起着非常重要的作用。在编写类时,需要根据需要定义合适的构造函数和析构函数,以保证对象的正确创建和销毁。
相关问题
写一个C++程序, 声明一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况编写程序声明一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。
好的,以下是程序的实现:
```c++
#include <iostream>
using namespace std;
class BaseClass {
public:
int Number;
BaseClass() {
cout << "BaseClass constructor called" << endl;
}
~BaseClass() {
cout << "BaseClass destructor called" << endl;
}
};
class DerivedClass : public BaseClass {
public:
DerivedClass() {
cout << "DerivedClass constructor called" << endl;
}
~DerivedClass() {
cout << "DerivedClass destructor called" << endl;
}
};
int main() {
DerivedClass d;
return 0;
}
```
程序中,首先定义了一个基类`BaseClass`,其中有一个整型成员变量`Number`,并在构造函数和析构函数中分别输出提示信息。然后定义了一个派生类`DerivedClass`,继承自`BaseClass`,并在构造函数和析构函数中分别输出提示信息。最后在`main`函数中创建一个`DerivedClass`对象`d`,观察构造函数和析构函数的执行情况。
运行程序后,输出结果如下:
```
BaseClass constructor called
DerivedClass constructor called
DerivedClass destructor called
BaseClass destructor called
```
从输出结果可以看出,对象创建时先执行基类的构造函数,再执行派生类的构造函数;对象销毁时先执行派生类的析构函数,再执行基类的析构函数。这就是多态性的体现,派生类对象包含了基类对象,因此在创建和销毁对象时都要先执行基类的构造函数和析构函数。
编写程序声明一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况
以下是示例代码:
```c++
#include <iostream>
using namespace std;
class BaseClass {
public:
BaseClass() {
cout << "BaseClass constructor called." << endl;
}
virtual ~BaseClass() {
cout << "BaseClass destructor called." << endl;
}
};
class DerivedClass : public BaseClass {
public:
DerivedClass() {
cout << "DerivedClass constructor called." << endl;
}
~DerivedClass() {
cout << "DerivedClass destructor called." << endl;
}
};
int main() {
DerivedClass obj;
return 0;
}
```
运行结果为:
```
BaseClass constructor called.
DerivedClass constructor called.
DerivedClass destructor called.
BaseClass destructor called.
```
从结果可以看出,当创建DerivedClass对象时,首先会调用BaseClass的构造函数,然后调用DerivedClass的构造函数;当对象被销毁时,先调用DerivedClass的析构函数,再调用BaseClass的析构函数。这是因为在派生类的构造函数和析构函数中,会自动调用其基类的对应函数。
阅读全文